0 函数依赖和码
完全函数依赖和部分函数依赖
在R(U)中,如果X->Y,并且对于X的任何一个真子集X‘都有X’↛Y,则称Y对X完全函数依赖。相反,称为部分函数依赖
传递函数依赖
如果X->Y,Y->Z,且Y不包含于X,Y↛X,则称Z传递函数依赖于X。
- 码
内容参考于https://blog.csdn.net/sumaliqinghua/article/details/85872446
- 码=超键:能够唯一标识一条记录的属性或属性集(要标识一行数据)
- 如:学号、学号+姓名、学号+性别、全码等
- 候选码:能够唯一标识一条记录的最小属性集
- 学生信息表中:学号和身份证号为两个候选码
- 反例:仓库号->所在区域,所在区域->区域主管,但所在区域不是候选码,也就不是主属性了
- 主键:在候选码中人为选的
- 主属性:所有候选码包含的属性
- 非主属性:所有侯选码不包含的属性
- 练习题
见https://blog.csdn.net/sumaliqinghua/article/details/85872446
1 第一范式
定义:如果关系模式R中的所有属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF
要点:每个属性都是不可再分的
2 第二范式
定义:如果关系模式R属于第一范式,且每个非主属性都完全函数依赖于R的码,则称R属于第二范式,简称2NF
要点:每个非主属性都完全函数依赖于码
例如:
有关系模式WAE(仓库号,设备号,数量,所在区域,区域主管),其中,
1 | (仓库号,设备号)->数量 |
可知,仓库号、设备号为主属性,数量、所在区域、区域主管为非主属性。所有属性均不可再分,所以属于1NF。但所在区域和区域主管两个非主属性不是完全函数依赖关系,所以不是2NF范式
规范办法:投影分解法
将上述WAE关系模式分解为:
WE(仓库号,设备号,数量)
WA(仓库号,所在区域,区域主管)
其中,WE码为(仓库号,设备号)函数依赖为
1 | (仓库号,设备号)->数量 |
WA码为(仓库号),非主属性为所在区域和区域主管,函数依赖为
1 | (仓库号)->所在区域,所在区域->区域主管,(仓库号)->区域主管【传递】 |
3 第三范式
定义:如果关系模式R属于2NF,且每个非主属性都不传递函数依赖于R的候选码,则称R属于第三范式,简称3NF。
要点:每个非主属性都不存在传递函数依赖
例如:
在上述关系模式WA中,存在传递函数依赖,不符合3NF 范式
规范方法:投影分解法
将WA分解为两个模式:
W(仓库号,所在区域)
A(所在区域,区域主管)
在W关系中,码为仓库号,函数依赖为:
1 | 仓库号->所在区域 |
在A关系中,码为所在区域,函数依赖为:
1 | 所在区域->区域主管 |
4 BC范式/BCNF范式
定义:如果关系模式R属于1NF,且对于所有的函数依赖X- >Y(Y∉X),决定因素X都包含了R的一个候选码,则称R属于BC范式,简称BCNF
要点(特征):
- 所有非主属性都完全函数依赖于每个候选码
- 所有主属性都完全依赖于每个不包含它的候选码
- 没有任何属性完全函数依赖于非码的任何一组属性
BC范式既检查主属性,又检查非主属性,可以说,任何满足BC范式的关系都必然满足第三范式。
上述关系W和A中,都只有一个主键,作为唯一的候选码,且都只有一个函数依赖,为完全函数依赖,符合BC范式的条件。