FD的逻辑蕴涵
定义4.2
设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F ? X→Y。
定义4.3
设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F+。即 F+={ X→Y |F?X→Y}FD的推理规则
设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集。FD的推理规则有以下三条:
A1(自反性,reflexivity):若Y?X?U,则X→Y在R上成立。例:设U的属性为{学号、姓名、家庭住址},其中没有两个同学的家庭住址是相同的。设X为{学号、姓名},Y为{姓名},这样满足Y?X?U。可以看出 X→Y在R上成立,但是Y→X是不成立的
A2(增广性,augmentation):若X→Y在R上成立,且Z?U,则XZ→YZ在R上成立。例:设U的属性为{学号、姓名、家庭住址},其中没有两个同学的家庭住址是相同的。设X为{学号、姓名},Y为{姓名},Z为{家庭住址}。可以看出XZ为{学号、姓名、家庭住址},YZ为{姓名、家庭住址},那么XZ→YZ在R上成立
A3(传递性,transitivity):若X→Y和Y→Z在R上成立,则X→Z在R上成立。例:设U的属性为{学号、姓名、家庭住址},其中没有两个同学的家庭住址是相同的。其中X为{学号},Y为{家庭住址},Z为{姓名},可以看出X→Y和Y→Z在R上成立,且X→Z在R上成立。
FD推理规则A1、A2和A3是正确的。也就是,如果X→Y是从F用推理规则导出,那么X→Y在F+中。
FD的其他五条推理规则:
(1) A4(合并性,union):{ X→Y,X→Z }?X→YZ。
(2) A5(分解性,decomposition):{ X→Y,Z?Y }?X→Z。
(3) A6(伪传递性):{ X→Y,WY→Z }?WX→Z。
(4) A7(复合性,composition):{ X→Y,W→Z }?XW→YZ。
(5) A8 { X→Y,W→Z }?X∪(W-Y)→YZ。
例4.5 已知关系模式R(ABC),F={ A→B,B→C },求F+。
根据FD的推理规则,可推出F的F+有43个FD。
譬如,据规则A1可推出A→φ(φ表示空属性集),A→A,…。据已知的A→B及规则A2可推出AC→BC,AB→B,A→AB,…。据已知条件及规则A3可推出A→C等。作为习题,读者可自行推出这43个FD。
上题中43个FD分别为:
A→空 A B→空 AC→空 ABC→空 B→空 C→空
A→A AB→A AC→A ABC→A B→B C→C
A→B AB→B AC→B ABC→B B→C 空→空
A→C AB→C AC→C ABC→C B→BC
A→AB AB→AB AC→AB ABC→AB BC→空
A→AC AB→AC AC→AC ABC→AC BC→B
A→BC AB→BC AC→BC ABC→BC BC→C
A→ABC AB→ABC AC→ABC ABC→ABC BC→BC
定义4.4 对于FD X→Y,如果Y?X,那么称X→Y是一个“平凡的FD”(可以按照规则正常推导出来的),否则称为“非平凡的FD”。
定理4.3 如果A1…An是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X→Ai(i=1,…,n)成立。
充分用规则A4推导,必要用规则A5推导
FD和关键码的联系
定义4.5 设关系模式R的属性集是U,X是U的一个子集。如果X→U在R上成立,那么称X是R的一个超键。如果X→U在R上成立,但对于X的任一真子集X1都有X1→U不成立,那么称X是R上的一个候选键。本章的键都是指候选键。见书中P43页超键和候选键的定义。
例4.6 在学生选课、教师任课的关系模式中:
R(S#,SNAME,C#,GRADE,CNAME,TNAME,TAGE)
如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。
根据这些规则,可以知道(S#,C#)能函数决定R的全部属性,并且是一个候选键。虽然(S#,SNAME,C#,TNAME)也能函数决定R的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。
属性集的闭包
定义4.6 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+={ 属性A | X→A在F+中 }
(X+里包含n个属性,那么左边为X的FD的个数为2的n次幂)
定理4.4 X→Y能用FD推理规则推出的充分必要条件是Y?X+。
例4.7 属性集U为ABCD,FD集为{ A→B,B→C,D→B }。则用上述算法,可求出A+=ABC,(AD)+=ABCD,(BD)+=BCD,等等。
此时左边为A的函数依赖个数为2的3次幂,左边为AD的函数依赖个数为2的4次幂,左边为BD的函数依赖个数为2的3次幂
属性集的闭包
定义4.6 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+={ 属性A | X→A在F+中 }
(X+里包含n个属性,那么左边为X的FD的个数为2n)
定理4.4 X→Y能用FD推理规则推出的充分必要条件是Y?X+。
例4.7 属性集U为ABCD,FD集为{ A→B,B→C,D→B }。则用上述算法,可求出A+=ABC,(AD)+=ABCD,(BD)+=BCD,等等。
此时左边为A的函数依赖个数为2的3次幂,左边为AD的函数依赖个数为2的4次幂,左边为BD的函数依赖个数为2的3次幂
(注,在属性集的闭包与FD推理规则的完备性中,部分公式使用html显示不正确,建议下载ppt查看:ppt下载地址:
关系数据库的规范化设计教程下载)