(轉)數據庫求屬性集閉包的算法

【例】關係模式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

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