关系范式之我理解
来源:互联网 发布:php xml 转json 编辑:程序博客网 时间:2024/05/26 02:21
关系范式:规范化的关系模式。
不同的规范化程度,产生不同的范式。
规范化:一个低一级的范式,经过模式分解转换成若干高一级的关系模式集合,这一过程叫做关系模式的规范化。
一、第一范式(1 NF)—First Normal Form:
在关系模式R的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。记为R∈l NF。
不属于1NF的关系称为非规范化关系。必须转化成规范化的关系。
即不要把不相关的东西放到一个表里面。
如:
SC(学号,课程号,成绩,学分);SC∈1 NF
组合关键字:(学号,课程号)
函数依赖:
(学号,课程号) ----> 成绩
课程号 ----> 学分
满足1NF仍可能出现问题:
1、数据冗余:学分重复存储次数=选修该科的学生人数
2、更新异常:调整学分时容易发生数据不一致。
3、插入异常:下期的新开课不能插入。
4、删除异常:老生毕业而新生未选某课时,会删除该课程。
产生原因:
(学号,课程号) ----> 学分
二、第二范式(2 NF)
定义:设R∈1NF,若R(U)中的所有非主属性都完全函数依赖于任一候选关键字,则称R属于第二范式。
将关系SC规范成 2 NF
——消除部分函数依赖,
SC(学号,课程号)
SC1(学号,课程号,成绩);
C1(课程号,学分)
则SC1∈2 NF;C1∈2 NF;
消除了存储异常。
记作:R∈2 NF。
再如:
S1(学号,姓名,所在系,系主任)
主关键字:学号(单属性)
函数依赖:学号函数决定各个属性,S1∈2 NF。
存在问题:存储异常
造成原因:存在传递依赖
学号 所在系;
所在系 学号 ;
所在系 系主任;
学号 系主任
三、第三范式(3 NF)
定义:若R∈2 NF,且R的任一非主属性都不传递依赖于任何候选关键字,则称R为第三范式的关系模式,记作
R∈3 NF。
将S1规范成3 NF
S1(学号,姓名,所在系,系主任) S2(学号,姓名,所在系); D1(所在系,系主任)
则S2,D1均无部分依赖与传递依赖,所以,S1∈3NF, D1∈
3NF;消除了存储异常。
再如:
WPE(仓库号,配件号,职工号,数量)
语义分析与函数依赖:
(1)一个仓库有多个职工;一个职工仅在一个仓库工作。
职工号 仓库号
(2)每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件;
(仓库号,配件号) 职工号
(职工号,配件号) 数量
(3) 同种型号的配件可以分放在多个仓库中,每个仓库可以放多种配件。
(仓库号,配件号) 数量
候选关键字:
(仓库号,配件号);(职工号,配件号)
主属性:仓库号、配件号、职工号。
非主属性:数量
规范化程度:非主属性直接完全依赖于组合关键字,
WPE ∈3 NF
存在问题:存储异常
1)数据冗余;
2)插入异常;
3)删除异常;
4)更新异常;
造成原因:
∵职工号 仓库号
∴(职工号,配件号) 仓库号
又∵(职工号,配件号) 职工号
职工号 仓库号
∴(职工号,配件号) 仓库号 (传递依赖)
四、 BC范式
定义:如果关系模式R(U,F)
(F:R(U)中的函数依赖集)的所有属性(包括主属性和非主属性)都不传递依依赖于R的任何候选关键字,那么称关系R是属于BCNF的。记为R∈BC NF。
等价定义:关系模式R,如果每个决定因素都包含关键字,则是BCNF的关系模式。
投影分解WPE成两个关系
EP(职工号,配件号,数量)
EW(职工号,仓库号)
则EP∈BCNF;EW∈BCNF,消除了存储异常
- 关系范式之我理解
- 我的理解之数据库建表三范式
- 我的理解之数据库建表三范式
- 我对关系型数据库设计范式的理解
- 关系数据库之范式
- 我理解的三个范式
- 关系数据库之 三个范式
- 关系数据库设计范式理解总结
- 关系型数据库的范式理解
- 关系数据库:概念理解 —— 范式
- 我对数据范式的理解!
- 我对数据库范式的理解
- 关系范式
- 对关系型数据库三范式的理解
- 理解数据库关系模型的范式(复习)
- 对关系型数据库五个范式的理解
- 理解关系型数据库表设计 三大范式
- 数据库设计之三范式理解
- 递归
- Android基础 : Android Service
- 高级排序
- WIN7显示文件扩展名 && “我的电脑”图标不见了 && 如何屏蔽掉文件的右键打开方式多余的项目
- Js中 关于top、clientTop、scrollTop、offsetTop等
- 关系范式之我理解
- 经典网站推荐
- ORACLE诊断事件
- WINDOWS脚本(备份数据库+FTP上传+自动删除7天前文件)
- C++实现基础图像处理
- CListCtrl 使用技巧
- 高质量代码的4个关键点
- WKT (Well Known Text)坐标参照系统
- python安装之安装模块制作