1函数依赖集闭包
定义:若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴涵的函数依赖的集合称为F的闭包,记为F+。
即:F+={X→Y|X→Y∈F∨“应用Armstong公理从F中导出的任何X→Y”}
△ F包含于F+,如果F=F+,则F为函数依赖的一个完备集。
△ 规定:若X为U的子集,X→Φ 属于F+。
步骤1:初始,F+=F
步骤2:对F+中的每个函数依赖f,在f上应用自反性和增广性,将结果加入F+中;对F+中的一对函数依赖f1和f2,如果f1和f2可以使用传递律结合起来,则将结果加入F+中。
步骤3:重复步骤2,知道F+不再增大为止。
例:已知关系模式R(ABC),F={A→C,B→C},求F+
解:∵U={A,B,C},左部不同的属性集组合有23=8种:
Φ、A、B、C、AB、BC、AC、ABC。
(1)∴Φ→Φ
(2)∵(A)F+=AC
∴A→Φ、A→A、A→C、A→AC。
(3)∵(B)F+=BC
∴B→Φ、B→B、B→C、B→BC。
(4)∵(C)F+=C
∴C→Φ、C→C。
(5)∵(AB)F+=ABC
∴AB→Φ、AB→AB 、AB→A、AB→B 、AB→C、AB→BC 、AB→AC、AB→ABC 。
(6)∵(BC)F+=BC
∴BC→Φ、BC→BC、BC→B、BC→C。
(7)∵(AC)F+=BC
∴AC→Φ、AC→BC、AC→B、AC→C。
(8)∵(ABC)F+=ABC
∴ABC→Φ、ABC→ABC 、ABC→A、ABC→B 、ABC→C、ABC→BC 、ABC→AB、ABC→AC。
所以F+共有35个具体如下:
∴Φ→Φ、A→∅、A→A、A→C、A→AC
B→Φ、B→B、B→C、B→BC
C→Φ、C→C、 AB→∅、AB→AB 、AB→A、AB→B 、AB→C、AB→BC 、AB→AC、AB→ABC 、
BC→Φ、BC→BC、BC→B、BC→C、
AC→Φ、AC→BC、AC→B、AC→C、
ABC→Φ、ABC→ABC 、ABC→A、ABC→B 、ABC→C、ABC→BC 、ABC→AB、ABC→AC
2属性集闭包
- 定义:U是属性集,F是R上的函数依赖集,X是U的子集,用函数依赖推理规则可以从F推出函数依赖X→A中所有A的集合,称为属性集X关于F的闭包,称为X+ 。
- 定理: X→Y 能用函数依赖推理规则推出的充分必要条件是 Y 属于 X+ 中。
- X+={A|X→A能够由F根据Armstong公理导出}
个人理解:属性集的闭包就是由该属性集合能确定的所有属性的集合
eg:考虑属性A,B,C,D,E,F的关系,假设此关系有函数依赖:AB -> C, BC -> AD, D -> E, CF -> B, 那么{A, B}的闭包{A, B}+为?
步骤:BC -> AD 分解为 BC -> A 和 BC -> D,从X = {A, B}出发,AB -> C,把C加入X,得到{A, B, C},再由 BC -> D,加入D,由D -> E,加入E,得到X为{A, B, C, D, E},F确定不了,终止。得到闭包为{A, B, C, D, E}。
闭包的作用----能判断(属性集A与属性集B是否含依赖关系){A1, A2 ... An} -> {B1, B2 ... Bm}是否成立,若B是A的闭包的子集,则推断成立。
步骤1:初始,X+=X
步骤2:如果F中有某个函数依赖Y→Z满足YX+。则X+=X+
Z
步骤3:重复步骤2,直到X+不再增大为止。
3候选键的求解方法
快速求解候选键的一个充分条件
对于给定的关系模式RE(, , … , )和函数依赖集F,可将其属性分为以下四类。
(1)L类:仅出现在F中的函数依赖左部的属性;
(2)R类:仅出现在F的函数依赖右部的属性;
(3)N类:在F的函数依赖左右两边均未出现的属性;
(4)LR类:在F的函数依赖左右两边均出现的属性
对于给定的关系模式R及其函数依赖集F,有一下结论。
(1)若X(X∈RE)是L类属性,则X必为RE的任意候选键的成员;
(2)若X(X∈RE)是L类属性,且包含了RE的全部属性,则X必为RE的唯一候选键;
(3)若X(X∈RE)是R类属性,则X不在任何候选键中;
(4)若X(Y∈RE)是N类属性,则X包含在R的任一候选键中;
(5)若X(X∈RE)是RE的N类和L类属性组成的属性集,且X包含了R的全部属性,则X
是RE的唯一候选键。
【例1】设有关系模式R(A, B, C, D)与它的函数依赖集F={D→B, B→D, AD→B, AC→D},求R的所有候选键。
解题思路:
通过考察F发现,A,C两属性是L类属性,故A、C两属性必在R的任何候选键中;
又由于=ABCD,即包含了R的全部属性,因此,AC是R的唯一候选键。
【例2】设有关系模式R(A, B, C, D, E, P)与它的函数依赖集F={A→D, E→D, D→B, BC→D, DC→A},求R的所有候选键。
解题思路:
通过考察F发现,C,E两属性是L类属性,故C,E两属性必在R的任何候选键中;
由于P是N类属性,故P属性也必在R的任何候选键中;
又由于= ABCDEP,即包含R的全部属性,因此,CEP是R的唯一候选键。
个人总结方法
- 找到L,N类属性。
- 如果属性闭包集(L,N)+=U 则已经找到候选键。
- (L,N)+
U,→找 LR类属性
- 如果属性闭包集(L,N,LR)+=U ,则已找到候选键 可看图上例9.10