数据库系统概论之规范化
1.问题的提出
一个关系模式系模式由五部分组成,是一个五元组:
R(U,D,DOM,F)
关系名R是符号化的元组语义,
U为一组属性,
D为属性组U中的属性所来自的域,
DOM为属性到域的映射,
F为属性组U上的一组数据依赖。
由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>
未经过规范化的关系模式,可能会造成的问题:
(1)数据冗余,浪费大量的存储空间。
(2)更新异常,数据冗余 ,更新数据时,维护数据完整性代价大。
(3)插入异常。
(4)删除异常。
2.相关定义
(1)数据依赖
分为函数依赖和多值依赖(这里仅考虑函数依赖)①是一个关系内部属性与属性之间的一种约束关系,通过属性间值的相等与否体现出来的数据间相互联系。②是现实世界属性间相互联系的抽象。③是数据内在的性质。④是语义的体现。
(2)函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等,
则称“X函数确定Y”或“Y函数依赖于X”,记作
X→Y
-
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
-
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
注:对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明, 我们总是讨论非平凡函数依赖。
- 若X→Y,则X称为这个函数依赖的决定因素。
- 若X→Y,Y→X,则记作X←→Y。
- 若Y不函数依赖于X,则记作X↛Y。
(3)完全函数依赖
在R(U)中,如果X→Y,并且对于X的任何一个真子集X′, 都有 X′↛Y, 则称Y对X完全函数依赖,记作
X⟶FY
(4)部分函数依赖
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作
X⟶PY
(5)候选码
设K为R<U,F>中的属性或属性组合。若K⟶FU,则K称为R的一个候选码。
- 如果U部分函数依赖于K,即K⟶PU,则K称为超码。候选码是最小的超码,即K的任意一个真子集都不是候选码。
- 若关系模式R有多个候选码,则选定其中的一个做为主码。
- 包含在任何一个候选码中的属性 ,称为主属性。
- 不包含在任何码中的属性称为非主属性。
- 整个属性组是码,称为全码。
(6)外码
关系模式 R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。
3.规范化理论
(1)1NF
数据属性不可再分,不存在表中有表,就是1NF。
(2)2NF
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF。(不存在非主属性对码的部分函数依赖)
(3)3NF
若关系模式R∈2NF,不存在非主属性对码的传递函数依赖,则R∈3NF。
(4)BCNF
设关系模式R<U,F>∈1NF,若X→Y且Y⊆X时X必含有码,则R<U,F>∈BCNF。
注:如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
4.关系模式规范化的基本步骤
画出依赖关系表示图,先找出主码,然后逐步消除,确定该关系模式属于哪一级别的范式。

5.数据依赖的公理系统
(1)逻辑蕴涵
对于满足一组函数依赖F的关系模式 R<U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t、s,若t[X]=s[X],则 t[Y]=s[Y]),则称F逻辑蕴涵X→Y。
(2)Armstrong公理系统
- 自反律:若Y⊆X⊆U,则X→Y 为F所蕴涵。
- 增广律:若X→Y为F所蕴涵,且X⊆Z,则XZ→YZ 为F所蕴涵。
- 传递律:若X→Y及Y→Z为F所蕴涵,则X→Z 为F所蕴涵。
(3)三条推理规则
- 合并规则:由X→Y,X→Z,有X→YZ。
- 伪传递规则:由X→Y,WY→Z,有XW→Z。
- 分解规则:由X→Y及Z⊆Y,有X→Z。
引理:X→A1A2…Ak成立的充分必要条件是X→Ai成立(i=1,2,…,k)
6.几个例题
(1)R(A,B,C,D),F={AB→C,B→D}
(2)R(A,B,C,D,E),F={AB→CE,E→AB,C→D}
(3)R(A,B,C,D),F={AB→C,D→B,B→D}
(4)R(A,B,C),F={A→B,A→C,B→A}
(5)R(A,B,C),F={A→B,C→A,B→A}
(6)R(A,B,C,D),F={A→C,D→B}
(7)R(A,B,C,D),F={A→C,CD→B}
下次出答案与结题过程