目录
一,问题的提出
关系模式由五部分组成,是一个五元组: R(U, D, DOM, F)
R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
D、DOM与模式设计关系不大 这里只用到三元组:R<U,F>
二维表每个分量必须是不可分开的数据项。
满足了这个条件的关系模式就属于:第一范式(1NF)
数据依赖
- 是一个关系内部属性与属性之间的一种约束关系
- 通过属性间值的相等与否体现出来的数据间相互联系
- 是现实世界属性间相互联系的抽象
- 是数据内在的性质 是语义的体现
主要类型:
- 函数依赖(Functional Dependency,简记为FD)
- 多值依赖(Multi-Valued Dependency,简记为MVD)
由存在于模式中的某些数据依赖可能会导致数据冗余,更新异常,插入异常,删除异常。
解决方法:
用规范化理论改造关系模式来消除其中不合适的数据依赖。
二,规范化
1.函数依赖
定义:
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r 中不可能存在:
两个元组在X上的属性值相等,而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
2.平凡函数依赖与非平凡函数依赖
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
平凡函数依赖都是必然成立的,不反映新的语义。
若不特别声明, 我们总是讨论非平凡函数依赖。
3. 完全函数依赖与部分函数依赖
4. 传递函数依赖
5.码
①候选码
设K为R<U,F>中的属性或属性组合。若K → U,则K称为R的一个 候选码
②超码
如果U部分函数依赖于K,即K → U,则K称为超码 。
候选码是最小的超码,即K的任意真子集都不是候选码。
③主码
若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
④主属性与非主属性:
包含在任何一个候选码中的属性 ,称为主属性 不包含在任何码中的属性称为非主属性 整个属性组是码,称为全码(All-key)
⑤外部码(也称外码)
关系模式 R中属性或属性组X 并非 R的码,
但 X 是另一个关系模式的码,
则称 X 是R 的外部码(Foreign key)也称外码。
6.范式
范式是符合某一种级别的关系模式的集合。
各种范式之间存在联系:某一关系模式R为第n范式,可简记为R∈nNF。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
①第一范式(1NF)
二维表每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于1NF
②第二范式(2NF)
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
③第三范式(3NF)
设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z (Y⊇ Z), 使得X→Y,Y→Z成立,Y ↛X不成立,则称R<U,F> ∈ 3NF。
④BC范式(BCNF)
设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
⑤多值依赖
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
⑥第四范式(4NF)
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
如果一个关系模式是4NF, 则必为BCNF。
规范化小结
候选码的求解理论和算法
定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,且X+包含了R的全部属性;
则X必为R的唯一候选码。
定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是R类属性,则X不在任何候选码中。
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是N类属性,则X必包含在R的任一候选码中。
推论:对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。
规范化程度越高的关系模式就越好吗?
不是,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。