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。
求属性集X(X U)关于U上的函数依
赖集F 的闭包XF+
输入:X,F
输出:XF+
步骤:
(1)令X(0)=X,i=0
(2)求B,这里B = { A |( V)( W)(V→WF
∧V X(i)∧A W)};
(3)X(i+1)=B∪X(i)
(4)判断X(i+1)= X (i)吗?
(5)若相等或X(i)=U , 则X(i)就是XF+ ,
算法终止。
(6)若否,则 i=i+l,返回第(2)步。
对于算法6.l, 令ai =|X(i)|,{ai }形成一个步长大
于1的严格递增的序列,序列的上界是 | U |,因
此该算法最多 |U| - |X| 次循环就会终止。
闭包就是由一个属性直接或间接推导出的所有属性的集合,例如:f={a->b,b->c,a->d,e->f}
由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}
1:.将F中的所有依赖右边化为单一元素 AB->C C->A BC->D ACD->B BE->C CE->F CE->A CF->B CF->D D->E D->F 2:去掉F中所有冗余依赖关系.做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉. 去掉AB->C欢迎分享,转载请注明来源:内存溢出
评论列表(0条)