1. 函数依赖集闭包的定义
定义1:若给定函数依赖集 F,可证明其他函数依赖也成立,则称这些函数依赖被 F 逻辑蕴涵
定义2:令F为一函数依赖集,F 逻辑蕴涵的所有函数依赖组成的集合称为F 的闭包,记为 F+
计算方法是 Armstrong公理的推理规则
举例:
自反律:(A,B) → B
增补律:(A,B) → C,则 (A,B, D, E) → (C, D, E)
传递律:A → B,B → C,则 A → C
合并律:A → B,A → C,则 A → (B, C)
分解律:A → (B, C),则 A → B,A → C
伪传递律:A → B,(B, C) → D,则 (A, C) → D
例题:令 r(R) = r(A, B, C, G, H, I),函数依赖集F = {A→B, A→C, CG→H, CG→I, B→H}。可列出 F+ 中的几个依赖。
解:因为 A→B 且 B→H,由传递律可得 A→H;
因为 CG→H 且 CG→I,由合并律可得 CG→HI;
因为 A→C 且 CG→I,由伪传递律可得 AG→ I。
……
2. 属性集闭包的定义
定义:令 r(R) 为关系模式,F为函数依赖集,A R,则称在函数依赖集 F 下由 A 函数确定的所有属性的集合为函数依赖集 F 下属性集 A 的闭包,记为 A+ 。
例题 1:对于关系模式 r(R) = r(A, B, C, D, E)和函数依赖集F = {A→BC, CD→E, B→D, E→A}, 试计算 A+, B+ 。
解:① 设 closure = A,
由 A→BC 得,closure = ABC,
由 B→D 得,closure = ABCD,
由CD→E 得,closure = ABCDE,综上,A+ = ABCDE。
设closure = B,
由B→D得,closure=BD,综上,B+ = BD。
例题2: r(R) = r(A, B, C, G, H, I),F = {A→B, A→C, CG→H, CG→I, B→H},计算(AG)+。
解:设closure = AG,
由 A→B 得,closure = ABG,
由 A→C 得,closure = ABCG,
由 CG→H 得,closure = ABCGH,
由 CG→I 得,closure = ABCGHI, 综上,AG+=ABCGHI。