由关系模型的形式化定义得出:一个关系模型应当是一个五元组。
R(U,D,DOM,F)R(U,D,DOM,F)R(U,D,DOM,F)
参数 | 含义 |
R | 符号化的元组语义 |
U | 为一组属性 |
D | 为属性组U中的属性所来自的域 |
DOM | 属性到域的映射 |
F | 属性组U上的一组数据依赖 |
数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值得相等与否体现出来的数据间得相关联系。
函数依赖
定义:设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→YX \rightarrow YX→Y
定义:在R(U)R(U)R(U)中,如果X→YX \rightarrow YX→Y,并且对于X的任何一个真子集X′X'X′,都有X′↛YX' \nrightarrow YX′↛Y,则称Y对X完全函数依赖,记作X→FYX \rightarrow^F YX→FY
若X→YX \rightarrow YX→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X→PYX \rightarrow^P YX→PY
定义:在R(U)R(U)R(U)中,如果X→Y(Y⊈)X,Y↛X,Y→Z,Z⊈YX \rightarrow Y(Y \nsubseteq) X,Y \nrightarrow X,Y \rightarrow Z,Z \nsubseteq YX→Y(Y⊈)X,Y↛X,Y→Z,Z⊈Y则称Z对X传递函数依赖,记为X→传递ZX \rightarrow^{传递} ZX→传递Z
键
定义: 设K为R<U,F>中的属性或属性组合,若K→FUK \rightarrow^F UK→FU则K为R的候选键(candidate key)。
如果U部分函数依赖于K,即K→PUK \rightarrow^P UK→PU则K称为超键(Surpkey)。候选键是最小的超键,即K的任意一个真子集都不是候选键。
定义: 关系模式R中属性或属性组X并非R的键,但X是另一个关系模式的键,则称X是R的外部键(foreign key),也称外键。
范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。
1971-1972年Codd系统的提出了1NF、2NF、3NF的概念,讨论了规范化的问题。1974年,Codd和Boyce共同提出一个新范式,即BCNF。1976年Fagin提出了4NF。后来又有研究人员提出5NF。
对于各种范式之间的关系有:
5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF5NF \subset 4NF \subset BCNF \subset 3NF \subset 2NF \subset 1NF5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫做范式化。
1NF
符合1NF的关系中每个属性都不可再分。
即列不可再分,每一列具有原子性。
2NF
定义:若R∈1NFR \in 1NFR∈1NF且每一个非主属性完全函数依赖于任何一个候选键,则R∈2NFR \in 2NFR∈2NF
即在满足1NF的前提下,属性完全依赖于主键,不存在对主键的部分依赖
3NF
定义:设关系模式R<U,F>∈1NFR<U,F> \in 1NFR<U,F>∈1NF若R中不存在这样的键X,属性组Y及非主属性Z(Z⊉Y)(Z \nsupseteq Y)(Z⊉Y)使得X→Y,Y→ZX \rightarrow Y,Y \rightarrow ZX→Y,Y→Z成立,Y↛XY \nrightarrow XY↛X,则称R<U,F>∈3NFR<U,F> \in 3NFR<U,F>∈3NF
即在满足2NF的前提下,没有间接依赖于主键的列
BCNF
BCNF(Boyce Codd Normal Form)是由Boyce与Codd提出,比3NF又进一步,通常认为BCNF是修正的第三范式
定义:关系模式R<U,F>∈1NFR<U,F> \in 1NFR<U,F>∈1NF,若X→YX \rightarrow YX→Y且Y⊈XY \nsubseteq XY⊈X时X比含有键,则R<U,F>∈BCNFR<U,F> \in BCNFR<U,F>∈BCNF