目录
BCNF(Boyce Codd Normal Form) 扩充的第三范式
函数依赖
(属于语义范畴)
平凡函数依赖
非平凡函数依赖
部分函数依赖
完全函数依赖
传递函数依赖
码与主属性
候选码 关系模式R<U,F>中的属性或属性组合K,整个属性组U完全函数于K,那么K为R的一个候选码
超码 如果U部分函数依赖于K,那么称K为超码 候选码是最小的超码
主码 候选码有多个,选定一个作为主码
主属性 包含在任何一个候选码中的属性
非主属性 不包含在任何码中的属性称为非主属性
全码 整个属性组都是一个码 不等价于所有属性都是主属性
外码 关系模式R中属性或属性组 X 并非 R的码,但X 是另一个关系模式的码
范式
第一范式 1NF Normal Form
对一个二维表R,如果它所有关系的分量都是不可分的,则称关系模式R属于第一范式,简写为R∈1NF。
关系数据库中的所有关系模式必须满足第一范式。
数据冗余、删除异常、插入异常、更新异常
第二范式 2NF
消除了非主属性对码的部分函数依赖
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF。
如果候选码都是单属性,那么必定都是完全函数依赖 => 如果关系模式R中的候选码都由单属性构成,那么该关系模式为2NF
投影分解的方法将1范转化为2范
更新异常、删除异常、插入异常
第三范式 3NF
消除了非主属性对码的传递函数依赖
设关系模式R<U,F>∈1NF, 若R中不存在这样的码X、属性组Y 及非主属性Z(Y ⊉ Z), 使得X→Y (Y ↛ X ),Y→Z 成立,则称R<U,F> ∈3NF。(可能存在主属性对码的部分函数依赖以及传递函数依赖)
没有非主属性 必定属于3NF
如果R∈3NF,则R∈2NF
插入异常 删除异常
BCNF(Boyce Codd Normal Form) 扩充的第三范式
定义:
消除了主属性对码的部分和传递函数依赖
设关系模式R<U,F>∈1NF,若X →Y且Y⊈X 时X 必含有码,则R<U,F>∈BCNF。(每一个属性决定集都包含候选码)
如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
所有非主属性都完全函数依赖于每个候选码;
所有主属性都完全函数依赖于每个不包含它的候选码:
没有任何属性完全函数依赖于非码的任何一组属性
R∈BCNF ⇒ R∈3NF R∈BCNF ⇍ R∈3NF
BCNF的确定:
求出R的所有候选码;
列出F的所有函数依赖;
如果F中所有的函数依赖中的决定因素都包含码,则R∈BCNF;否则,R∉BCNF,R最高只能是3NF。
分解成BCNF的一种算法:
多值依赖
定义:
设R(U)是属性集U上的一个关系模式。X, Y, Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x, z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
另一种定义:在R(U)的任一关系r中,如果存在元组t,s使得t[X]=s[X],交换s,t元组的Y值所得的两个新元组必在r中,则Y多值依赖于X,记为X→→Y。这里X,Y是U的子集,Z=U-X-Y
性质:
4NF
定义:
消除非平凡且非函数依赖的多值依赖
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X →→Y (Y ⊈ X),X都含有码,则R<U,F>∈4NF。
可以有非平凡的多值依赖,但必须是函数依赖
将BCNF的R分解成4NF的方法:
假设R(A,B,C)∈BCNF满足A→→B, A→→C,则分解R可分解为R1(A, B)和R2(A, C),要求R1(A, B)和R2(A, C) 都是平凡的多值依赖。
其它形式的分解类似,原则是分解后的所有关系模式必须都是平凡的多值依赖
小结
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。
关系数据库的规范化理论是数据库逻辑设计的工具。
关系模式规范化基本步骤: