码(Key)
候选码:某一属性组的值可唯一标识一个元组,其子集不能,该属性组为候选码(如学生表中的学号,成绩表中学号+课程号)
R<U,F> K是R的候选码
主属性:候选码的所有属性都是主属性
键字=码字, 主键=主码=主关键字,候选键=候选码=候选关键字
范式(Normal Form)
规范化:一个低一级的关系模式通过模式分解可以转化为若干个高一级的关系模式的集合
1NF(字段不可分)
如果一个关系满足:每一属性值都是不能再分的元素,那么该关系是一个规范化的关系。
范围第一范式:手机号(一个人有多个手机号,值不唯一)、姓名+住址放同一列
2NF(有关键字,非主属性依赖关键字)
如果一个关系属于1NF,且每个非主属性完全函数依赖于关键字,则该关系称为2NF
特点:每条数据具有唯一性
NmaeCour、Inst、Addr、NameCour都是非主属性,但他们没有完全函数依赖于关键字,所以不属于2NF
模式分解后,每个非主属性完全函数依赖于关键字
3NF(非主属性不能相互依赖)
如果关系中每个非主属性不部分依赖于关键字,也不传递依赖于关键字的关系是属于3NF
如果没有非主属性,一定至少达到了第三范式
Inst、Addr是非主属性上图情况不能存在
分解合并后的关系模式集合依然符合第三范式的要求,A、C、E都是各自关系模式的主属性。
R12(A,B,C):
- A是主属性
- B和C都完全函数依赖于A
R34(C,D,E):
- C是主属性
- D和E都完全函数依赖于C
R5(E,F,G):
- E是主属性
- FG都完全函数依赖于E
BCNF
关系模式R〈U,F〉∈1NF。若X→Y且Y ∈X时X必含有码,则R〈U,F 〉∈BCNF
即关系模式R〈U,F〉中,若每一个决定因素都包含码,则R〈U,F 〉 ∈BCNF
翻译后:
(1) 所有非主属性都完全函数依赖于每个候选码
(2) 所有主属性都完全函数依赖于每个不包含它的候选码
(3) 没有任何属性完全函数依赖于非码的任何一组属性
(4) 主属性不传递依赖于任何一个侯选关键字
(5) 非主属性不传递依赖于任何一个侯选关键字
(1)是第二范式特征
(2)主属性也要完全函数依赖于关键字
(3)不能有非码可以“决定”,比如码为 (s,t)(s,j),但出现了 t->j 就违反了BC范式,因为t是主属性但不是码
(4)(5) 禁止了所有传递依赖