关系模式的规范化理论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑤ 判断是否X(i+1)= X(i),显然X(2)≠X(1)。
⑥在F中找所有满足条件V X(2)=CDEGH的函数依赖V→W,结
果 为 C→A , CH→D , CG→DH , CE→AG , 则 B=ADGH , 于 是 X(3) =
X(2)∪B=CDEGH∪B=ACDEGH 。
⑦判断是否X(i+1)= X(i),这时虽然X(3)≠X(2)。但X(3)已经包含了全
第6章 关系模式的规范化理论
关系模式的规范化理论
6.1 关系模式设计中的问题 6.2 函数依赖 6.3 函数依赖的公理系统 6.4 关系模式的分解及其问题 6.5 关系模式的规范化 6.6 多值函数依赖与4NF 本章小结
6.1 关系模式设计中的问题
假设需要设计一个学生学习情况数据库StuDB。
(给定条件)
∴ A→E
(A3传递律)
证毕。
定理6.1:若Ai(i=1,2,…,n)是关系模式R的属性, 则X→(A1,A2,…,An)成立的充分必要条件是X→Ai均成立。
属性集闭包
定 义 6.8 ( 属 性 集 闭 包 ) : 设 有 关 系 模 式 R(U),U={ A1 , AX2关,于…函,A数n}依,X赖是集U的F的子闭集包,FX是F U定上义的为一:个函数依赖集,则属性集
X F={Ai|Ai∈U,且X→Ai可用阿氏公理从F推出}
例:设关系模式R(A,B,C)的函数依赖集为F={A→B,B→C}, 分别求A、B、C的闭包。
解:若X=A,
∵ A→B,B→C (给定条件)
∴ A→C
(A2传递律)
∵ A→A
(A1自反律)
∴
A
F
={A,B,C}
(据定义)
若X=B
∵ B→B (A1自反律) 若X=C,
关系S
S# SN
SD
SA
0001 张华 计算机 17
0002 李明 信息管理 19
0003 刘强 计算机 18
关系S_C
S#
C#
G
0001 C101
5
C# C101 C102 C103 C105
关系C
CN 离散数学 数据结构 操作系统 数据库原理
PC# C110 C101 C102 C102
0001 C102
解:① X(0)=X=DH
,求
X
F
。
②在F中找所有满足条件V X(0)=DH的函数依赖V→W,结果只
有D→EG,则B=EG,于是X(1)=X(0)∪B=DEGH 。
③ 判断是否X(i+1)= X(i),显然X(1)≠X(0)。
④在F中找所有满足条件V X(1)=DEGH的函数依赖V→W,结果
为EH→C,于是B=C,则X(2)=X(1)∪B=CDEGH 。
部属性,所以不必再继续计算下去。
最后, X =F (DH)+={ACDEGH}。
属性集闭包计算结束判断方法
在判断计算何时结束时,可用下面四种方法: (1)X(i+1)= X(i)。 (2)X(i+1)已包含了全部属性。 (3)在F中再也找不到函数依赖的右部属性是 X(i)中未出现过的属性。 (4)在F中再也找不到满足条件V X(i)的函数 依赖V→W。
例如,在上例的S(S#,SN,SD,SA)、C(C#,CN,PC#) 、S_C(S#,C#,G)三个关系模式中,存在以下关键字:
S# f (S#,S,N S,D S)AC# f (C#,C,N P# C ) (S#,C#) fG
所以,S#、C#和(S#,C#)分别是关系模式S、C和S_C的关键 字 。(S #,S)N p (S #,S,N S,S D)A(S#,S)D p (S#,S,N S,S D)A
B→C
(给定条件) C→C (自反律)
∴
B
F
={B,C}
(据定义)
∴
C
F
={C} (据定义)
定理6.2:设F是关系模式R(U)上的函数依赖集,U是属性全集,X,Y
U,则函数依赖X→Y是用阿氏公理从F推出的,充分必要条件是
Y
X
F
;
反之,能用阿氏公理从F推出的所有X→Y的Y都在X
F
中。
这个定理告诉我们,只要Y
(1) A1:自反律(Reflexivity)
如果Y X,则X→Y成立,这是一个平凡函数依赖。 根据A1可以推出X→Ф、U→X等平凡函数依赖(因为Ф X U)。
(2) A2:增广律(Augmentation)
如果X→Y,且ZW,则XW→YZ成立。
根据A2可以推出XW→Y、XZ→YZ或XW→YW、X→XY、XY→X等。
所以,(S#,SN)和(S#,SD)都不是关键字,而是超关键字。
6.3 函数依赖的公理系统
6.3.1 函数依赖的逻辑蕴涵 6.3.2 Armstrong公理系统 6.3.3 函数依赖集的等价与覆盖
6.3.1 函数依赖的逻辑蕴涵
例如在上述的传递函数依赖中,由X→Y,Y→Z,推导出X→Z, 这可以表示为: {X→Y,Y→Z}⊨ X→Z 其中: ⊨表示逻辑蕴涵。
一般地讲,函数依赖的逻辑蕴涵定义如下:
定义6.6(逻辑蕴涵):设F是由关系模式R(U)满足的一个函数 依赖集,X→Y是R的一个函数依赖,且不包含在F,如果满足F中 所有函数依赖的任一具体关系r,也满足X→Y,则称函数依赖集F 逻辑地蕴涵函数依赖X→Y,或称X→Y可从F推出。可表示为:
F⊨X→Y
函数依赖集F的闭包F+
3
0002 李明 信息管理 19
C103
操作系统
C102
3
0002 李明 信息管理 19
C105 数据库原理
C102
3
0003 刘强
计算机
18
C107
汇编语言
C110
4
(1)冗余度大
(2)操作异常
由于数据的冗余,在对数据操作时会引起各种异常:
➢插入异常
➢删除异常
➢修改异常
关系模式的分解
我们采用分解的方法,将上述S_C_G分解成以下三个模式: S(S#,SN,SD,SA) C(C#,CN,PC#) S_C(S#,C#,G)
F
XZ
XYZ
XZZ
XYZZ YYZ
XXY XYXY XZXY XYZXY YZ
XXZ
XYXZ
XZXZ
XYZXZ
YZY
XYZ XYYZ XZYZ XYZYZ YZZ
XXYZXYXYZXZXYZXYZXYZYZYZ
6.3.2 Armstrong公理系统
1)独立推理规则
即下面给出的Armstrong公理的三条推理规则是彼此独立的。
则称X函数决定Y,或Y函数依赖于X。记为X→Y。
在上述的关系模式S(S#,SN,SD,SA)中,存在以下函 数依赖:
S #→SD S#→SN S#→SA (S#,C#)→G
2)几种类型的函数依赖
定义6.2(非平凡函数依赖、平凡函数依赖):一个函数依赖 X→Y如果满足Y⊈X,则称此函数依赖为非平凡函数依赖,否则 称之为平凡函数依赖。
定义6.4(传递函数依赖):设X、Y、Z是关系模式R (U)中的 不同的属性集,如果X→Y,Y→X,Y→Z,则称Z传递依赖于X, 否则,称为非传递函数依赖。
3)关系的关健字和超关键字
定义6.5(关键字):在关系模式R(U)中,若K U,且满足K f,U 则称K为R的关键字。
一个包含了关键字的属性集合也能够函数决定(但不是完全函 数决定,而是部分决定)属性全集,我们把这种包含了关键字的 属性集合称为超关键字(Super Key)。
例如X→Φ, X→X , XZ→X等都是平凡函数依赖。 定义6.3(完全函数依赖、部分函数依赖):设X、Y是关系R的 不同属性集,若X→Y (Y函数依赖于X),且不存在X’⊂X ,使 X’→Y,则称Y完全函数依赖于X,记为 X fY; 否则则称Y部分函数依赖于X,记为 X pY。
例如,在上例关系S中, S# fSD是完全函数依赖; (S,#SN ) pSD、(S#,SA ) pSD是部分函数依赖。
则F G+。如若有X→Y∈F,则计算 ,如X G果Y
, 则X→X YG ∈G+;
➢第二步:同第一步,检查是否G F+;
➢第三步:如果F G+,且G F+ ,则F与G等价。
由此可见,F和G等价的充分必要 条件是:FG+,且G
下面我们以模式S_C_G(S#,SN,SD,SA,C#,CN,G,PC #)为例来说明该模式存在的问题。下表是其一个实例。
S#
SN
SD
SA
C#
CN
PC#Fra Baidu bibliotek
G
0001 张华
计算机
17
C101
离散数学
C110
5
0001 张华
计算机
17
C102
数据结构
C101
5
0001 张华
计算机
17
C105 数据库原理
C102
定义6.7:函数依赖集F所逻辑蕴涵的函数依赖的全体称为为F 的闭包(Closure),记为F+,即F+={X→Y|F⊨X→Y}
例如,有关系R(X,Y,Z),它的函数依赖集F={X→Y, Y→Z},则其闭包F+为:
X XY XZ XYZ Y Z
XX
XYX
XZX
XYZX
YY ZZ
XY XYY XZY XYZY YZ
5
0001 C105
3
0002 C103
3
0002 C105
3
0003 C107
4
C107 汇编语言 C110
6.2 函数依赖
1)函数依赖(Functional Dependency,简称FD)
定 义 6.1 ( 函 数 依 赖 ) : 设 有 关 系 模 式 R(U) , 其 中 U { A1 , A2,…,An}是关系的属性全集,X、Y是U的属性子集,设t和u是 关系R上的任意两个元组 ,如果t和u在X的投影t[X]=u[X]推出 t[Y]=u[Y],即:t[X]=u[X] => t[Y]=u[Y]
6.3.3 函数依赖集的等价和覆盖
定义6.9(函数依赖集的等价、覆盖):设F和G是关系R(U) 上的两个依赖集,若F+=G+,则称F与G等价,记为F=G。也可以 称F覆盖G,或G覆盖F;也可说F与G相互覆盖。
检查两个函数依赖集F和G是否等价的方法是:
➢第一步:检查F中的每个函数依赖是否属于G+,若全部满足,
(4)判断X(i+1)= X(i)吗?
(4)若X(i+1) ≠ X(i),则用i+1取代i,返回(2);
(5)若X(i+1)
=
X(i),则
X
F
=X(i),结束。
算法6.1的求解过程
例 : 设 F = { AH→C , C→A , EH→C , CH→D , D→EG ,
CG→DH,CE→AG,ACD→H},令X=DH
X
F
。
方法:根据下列步骤计算一系列属性集合X(0),X(1),…
(1) 令X(0)=X,i=0;
(2) 求属性集 B { A |( V ) W () V W F V X ( i ) A W )}
/*在F中寻找满足条件V ⊆ X(i)的所有函数依赖V→W,并记属性W的并集为B*/
(3) X(i+1)=X(i) ∪B
X
F
,则必有X→Y。于是,一个函
数依赖X→Y能否用阿氏公理从F推出的问题,就变成判断Y是否为
X
F
子集的问题。
下面介绍一下计算
X
F
的算法。
属性集的闭包计算
算法6.1:求属性集X(X
U)关于U上的函数依赖集F的闭包X
F
。
输入:属性全集U,U上的函数依赖集F,以及属性集X U。
输出:X关于F的闭包
几种类型的函数依赖
在属性Y与X之间,除了完全函数依赖和部分函数依赖关系等 直接函数依赖,还存在间接函数依赖关系。如果在关系S中增 加系的电话号码DT,从而有S #→SD,SD→DT,于是S#→DT。 在这个函数依赖中,DT并不直接依赖于S#,是通过中间属性 SD间接依赖于S#。这就是传递函数依赖。
例 6.2 : 设 有 关 系 模 式 R(A,B,C,D,E) 及 其 上 的 函 数 依 赖 集 F= {AB→CD,A→B,D→E},求证F必蕴涵A→E。
证明:∵ A→B
(给定条件)
∴ A→AB
(A2增广律)
∵ AB→CD
(给定条件)
∴ A→CD
(A3传递律)
∴ A→C,A→D (分解规则)
∵ D→E
(3) A3:传递律(Transitivity) 如果X→Y且Y→Z,则X→Z成立。
2)其他推理规则
推论1:合并规则(The Union Rule) {X→Y,X→Z}⊨ X→YZ
推论2:分解规则(The Decomposition Rule) 如果X→Y,Z Y,则X→Z成立
推论3:伪传递规则(The Pseudo Transitivity Rule) {X→Y,WY→Z}⊨ XW→Z
证:(1)X→Y⊨ X→XY X→Z⊨ XY→YZ 由上可得X→YZ
(2)Z Y⊨ Y→Z
X→Y 由上可得X→Z
(3)X→Y⊨WX→WY WY→Z 由上可得XW→Z
(A2增广律) (A2增广律) (A3传递律)
(A1自反律) (给定条件) (A3传递律)
(A2增广律) (给定条件) (A3传递律)
一个重要定理