第三节 数据依赖的公理系统 (1) (2) (3)
求闭包的算法:算法1求属性集X(X ?U)在U上的函数依赖集F 的闭包XF+,输入:X,F 输出:XF+。
⑴ 令X(0)=X,i=0;
⑵ 求B, B = {A|(?V)(?W)(V→W?F∧V ? X(i)∧A?W)};
⑶ X(i+1)=B∪X(i) ;
⑷ 判断X(i+1)= X(i)吗?;
⑸ 若相等或X(i)=U , 则X(i)就是XF+ , 算法终止;
⑹ 若否,则 i=i+l,返回第⑵步。
对于算法l, 令ai =|X(i)|,{ai }形成一个步长大于1的严格递增的序列,序列的上界是 | U |,因此
该算法最多|U| - |X| 次循环就会终止,函数依赖闭包。
例 已知关系模式R<U,F>, 其中 U={A,B,C,D,E};F={AB→C, B→D, C→E, EC→B, AC→B}, 求(AB)F+。
解:设X(0)=AB;
(1)计算X(1): 逐一扫描F集合中各函数依赖,找左部为A, B或AB的函数依赖:
AB→C,B→D。于是X(1)=AB∪CD=ABCD。
(2)因为X(0)≠ X(1) , 所以再找出左部为ABCD子集的那些函数依赖, 又得到AB→C, B→D, C→E, AC→B,
于是X(2)=X(1) ∪BCDE=ABCDE。
(3)因为X(2)=U,算法终止, (AB)F+ =ABCDE。
4. Armstrong公理系统的有效性与完备性,建立公理系统体系目的:从已知的 f 推导出未知的f。明确:
1. 公理系统推导出来的 f 正确?
2. F+中的每一个 f 都能推导出来?
有效性:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中。 /* Armstrong正确。
完备性:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来。 /* Armstrong公理够
用,完全。所有不能用Armstrong公理推导出来f, 都不为真,若 f 不能用Armstrong公理推导出来, f∈F+
5. 函数依赖集等价
定义 如果G+=F+,称函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。函数依赖集等价的
充要条件。
引理 F+ = G+ 的充分必要条件是F∈G+ , 和G∈F+。
证: 必要性显然,只证充分性。
⑴ 若F∈G+ ,则XF+∈XG++ 。
⑵ 任取X→Y?F+ 则有 Y∈XF+∈XG++ 。
所以X→Y (G+)+= G+, 即F+∈G+。
⑶ 同理可证G+∈F+ ,所以F+ = G+。
要判定F∈G+,逐一对F中的函数依赖X→Y,考察 Y 是否属于XG++ 。引理5.3 给出了判断两个函数依赖集
等价的可行算法。
6. 最小依赖集
定义 如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
(1) F中任一函数依赖的右部仅含有一个属性。
(2) F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
(3) F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
|