第八章 数据依赖和关系模式规范化
8.1关系模式设计中的数据语义问题
数据依赖,函数依赖,多值依赖
例
8.2函数依赖
符号:R,r,U,F,X,t,t[x]
定义8.2-1:设R为关系模式,X,YU,若t1,t2∈r都有如果t1[X]=t2[X],则必有t1[Y]=t2[Y],则称在R上X函数决定Y或者Y函数依赖于X,记为X→Y,X称为决定子。
平凡函数依赖
定义8.2-2:完全函数依赖
定义8.2-3:X,Y,Z是R的属性集,如果X→Y,YX,Y→Z,则称Z传递函数依赖于X。
定义8.2-4:F是函数依赖集合,X→Y是函数依赖,如果F在某个R上成立,则必然有X→Y也成立,则称F逻辑蕴涵X→Y。
定义8.2-5:函数依赖集合F所逻辑蕴含的函数依赖的全体称为F的闭包
Armstrong公理系统:
A1:自反率:如果YXU,则X→Y成立
A2:扩展率:如果X→Y成立,且ZU,则XZ→YZ成立
A3:传递率:如果X→Y,Y→Z成立,则X→Z成立
引理8.2-1:Armstrong公理是正确的,完备的
引理8.2-2:下列三条推理规则也是正确的:
合并规则:若X→Y,X→Z,则X→YZ
伪传递规则:若X→Y,WY→Z,则WX→Z
分解规则:若X→Y,且ZY,则X→Z
定义8.2-6:X关于F的闭包X+定义为X+={A|A∈U,X→A可由Armstrong公理推出}
引理8.2-3:X→Y可由Armstrong公理推出的充要条件是YX+
定理8.2-1:Armstrong公理是正确的,完备的
算法8.2-1:计算X+
例
定义8.2-7:F,G是两个函数依赖集合,如果F+=G+,责成F等价于G。
(1)如果F=G,则F+=G+
(2)如果FG,则F+G+
(3)如果FG+,则F+G+
引理8.2-4:F+=G+的充分必要条件是FG+且GF+
由该引理可得判定F+=G+的方法,只需判断FG+及GF+
引理8.2-5:任意一个函数依赖集合F总可以为一右部恒为单属性的函数依赖集合所覆盖。(构造)
定义8.2-8:若F满足下列条件,
F中所有函数依赖的右部均为单属性
F中不存在这样的函数依赖X→A:使F+=(F-{X→A})+
F中不存在这样的函数依赖X→A及ZX,使得F+=(F-{X→A}∪{Z→A})+
则称F为最小函数依赖集或最小覆盖
定理8.2-2:任一函数依赖集合必等价于某一最小函数依赖集合Fmin
构造性证明
求关系模式上所有候选键的方法
8.3多值依赖(MVD)
定义8.3-1:设R为关系模式,X、Y是R的属性集,如果对于R的任何实例r都有:如果r中存在两个元组s,t使得s[X]=t[X],则R中必然存在两个元组u,v使得
u[X]=v[X]=s[X]=t[X]
u[Y]=t[Y]且u[U―X―Y]=s[U―X―Y]
v[Y]=s[Y]且v[U―X―Y]=t[U―X―Y]
则称R满足X→→Y
MVD与FD的区别与联系
MVD的公理系统
A4互补率:如果X→→Y,则X→→(U―X―Y)
A5扩展率:如果X→→Y,且VW,则WX→→VY
A6传递率:如果X→→Y,Y→→Z,则X→→(Z-Y)
A7如果X→Y,则X→→Y
A8如果X→→Y,ZY,且对某一W当Y∩W=时有W→Z,则X→Z
A1~A8是完备的
推理规则:
(1)合并规则:X→→Y,X→→Z,则有X→→YZ
(2)伪传递规则:X→→Y,WY→→Z,则有WX→→(Z-WY)
(3)混合伪传递规则:X→→Y,XY→Z,则有X→(Z-Y)
(4)分解规则:X→→Y,X→→Z,则有X→→(Y∩Z),X→→(Y-Z),X→→(Z-Y)
8.4模式分解
定义8.4-1:R的分解
定义8.4-2:F在Ui上的投影
定义8.4-3:设=(R1,R2…Rk)是R的一个分解,r是R的任一个值,如果满足r=ΠU1(r) ΠU2(r) ΠU3(r)…ΠUk(r)则称是无损连接分解
定义8.4-4:分解保持函数依赖
引理8.4-1:设=(R1,R2…Rk)是R的一个分解,r是R的一个值,
ri=ΠUi(r),则有(1) rm(r);(2)如果s= m(r),则ΠUi(r)=ri;(3) mm(r)= m(r)
算法8.4-1:判别无损连接
定理8.4-1:算法8.4-1可以正确判断一个分解是否是无损的(iff)
定理8.4-2:R的一个分解={R1,R2}无损的充要条件是(U1∩U2)→(U1-U2)∈F+或者(U1∩U2)→(U2-U1)∈F+
算法8.4-2:判别一个分解是否保持函数依赖
8.5关系模式规范化
定义8.5-1:如果关系模式R中的所有非主属性都完全函数依赖于所有CK,则称R属于2NF
定义8.5-2:如果关系模式R中的非主属性既不部分依赖也不传递依赖所有CK,则称R属于3NF
(等价定义)
定义8.5-3:若对于R上的任何非平凡函数依赖X→Y都有X必为R上的SK,则称R属于BCNF
引理8.5-1:无损分解
引理8.5-2:无损分解
算法8.5-1:将关系模式分解为BCNF且保持无损连接的方法(分解法)
算法8.5-2:将关系模式分解为3NF且保持函数依赖的方法(合成法)
定理8.5-1:算法8.5-2产生一个保持函数依赖且化为3NF的分解
算法8.5-3:既保持函数依赖又无损的3NF转换算法
定理8.5-2:算法8.5-3产生一个保持函数依赖的化为3NF的无损分解
定理8.5-3:={R1,R2}是R的一个分解,D是R的函数依赖和多值依赖集合,则为无损分解当且仅当(U1∩U2)→→(U1-U2)或者(U1∩U2)→→(U2-U1)
定义8.5-4:R中若存在非平凡的多值依赖X→→Y,则X必为R的SK,满足此条件的R属于4NF
定义8.5-5:R中除了由SK构成的连接依赖外,别无其他连接依赖,则称R属于5NF