(转)数据库求属性集闭包的算法

【例】关系模式R<U,F>,其中U={A,B,C,D,E},F={AB→C,B→D,C→E,EC→B,AC→B},求(AB)+

第一步,令X(0)=AB。

第二步,求X(1)。先列出X(0)的非空子集,即AB的非空子集为{A,B,AB}。

然后扫描F集合,寻找{A,B,AB}可能存在的函数依赖,就可以得到:AB→C,B→D

于是就可以求得X(1)=X(0)∪C∪D=ABCD

然后判断X(0)如果等于X(1)就结束,所求即为答案,如果X(0)不等于X(1)就继续计算。

第三步,求X(2)。

同第二步求X(1)得非空真子集,然后在F中一次寻找函数依赖,可以得到:AB→C,B→D,C→E,AC→B

求得X(2)=X(1)∪C∪D∪E∪B=ABCDE

这时候发现X(2)已经等于全部属性集U了,就结束计算,得出(AB)+ =ABCDE

 

注:如果计算的X(2)不等于U,并且仍然不等于X(1),则继续计算下去。直到满足X(i)=X(i-1)或X(i)=U时停止,此时所求闭包为X(i)。
————————————————
版权声明:本文为CSDN博主「灰灰灰灰Gray」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Game_Zmh/article/details/88058069

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章