在本章中,将关系模式看作一个三元组:R(U,F)。
关系满足一个最基本的条件:每一个分量必须是不可分的数据项。
当确定一个值后,就能唯一地确定其它值。函数依赖 类似于数学中的函数 y = f (x),自变量 x 确定之后,相应的函数值 y 也就唯一确定。
例: F={Sno →Sdept, Sdept →Mname, (Sno,Cno) →Grade}
若对于 R(U)的任意一个可能的关系 r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称 X函数确定Y 或 Y函数依赖于 X,记作 X→Y。
设K为R中的属性或属性组合,若 K → F U K \overset F \rightarrow U K→FU,则称K为R的候选码。
注意U是完全函数依赖于K,而不是部分函数依赖于K。 如果U部分函数依赖于K,即 K → P U K \overset P \rightarrow U K→PU,则 K 称为 超码。
若有多个候选码,则选定其中的一个做为主码。
包含在任意一个候选码上的属性称为主属性。
不包含在任何候选码中的属性称为非主属性。
整个属性组都是码,称为全码。
1NF: 关系符合一个最基本的条件,每一个分量必须是不可分的数据项。
一个低一级范式的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合,这种过程就加规范化。
各种范式之间的关系有:
5 N F ⊆ 4 N F ⊆ 3 N F ⊆ 2 N F ⊆ 1 N F 5NF \subseteq 4NF \subseteq 3NF \subseteq 2NF \subseteq 1NF 5NF⊆4NF⊆3NF⊆2NF⊆1NF
2NF: 若 R ⊆ 1 N F R \subseteq 1NF R⊆1NF,且每一个非主属性完全函数依赖于任何一个候选码,则 R ⊆ 2 N F R \subseteq 2NF R⊆2NF。
当非主属性对码不是完全函数依赖,解决的办法是用投影分解把关系模型拆分为多个关系模式。
3NF: 设关系模式 R < U , F > ⊆ 1 N F R \subseteq 1NF R<U,F>⊆1NF,若 R中不存在这样的码 X,属性组 Y及非主属性 Z( Z ⊉ Y Z \nsupseteq Y Z⊉Y)使得 X → Y , Y → Z 成 立 , Y ↛ Z X \rightarrow Y,Y \rightarrow Z 成立,Y \nrightarrow Z X→Y,Y→Z成立,Y↛Z,则称R属于3NF。
BCNF: 设关系模式R∈1NF,若X →Y且Y ⊆ X时X必含有码,则R∈BCNF。
4NF: 关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R∈4NF。
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y 成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖,否则称X→→Y为非平凡的多值依赖。
1NF
| ↓ 消除非主属性对码的部分函数依赖
消除决定因素 | 2NF
非码的非平凡 | ↓ 消除非主属性对码的传递函数依赖
函数依赖 | 3NF
↓ ↓ 消除主属性对码的部分和传递函数依赖
----- BCNF
↓ 消除非平凡且非函数依赖的多值依赖
4NF
闭包(记作X+ ) 就是由一个属性直接或间接推导出的所有属性的集合。
根据给定的关系和函数依赖集将属性分为4类:
定理1
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论1
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选码
定理2
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。
定理3
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中。
推论2
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。
…………………………………………………………………………….