求關系模式的候選碼


數據庫利用閉包求關系模式的候選碼

求閉包的方法:

理解定義:閉包就是由一個屬性直接或間接推導出的所有屬性的集合

實例

有關系模式R(A,B,C,D,E,F),F是R上的函數依賴集合,F={A→B,B→C,EF→A,C→DE},則{A,B}的閉包是?

由B→C得出此時閉包為ABC,所以C在集合中,由C→DE得出此時閉包為ABCDE,此時依賴關系已全部用齊~AB的閉包就為ABCDE。

求關系模式的候選碼:

實例

給定關系模式R(A, B, C, D, E),如果存在依賴:A→B,BC→D,DE→A,則該關系模式的碼為?

1.分別寫出依賴關系兩邊的所有元素

L:CE

R:none

LR:ABD

L為依賴關系中只在左邊出現的元素,這些元素必為碼的一部分或者就是碼。

R為依賴關系中只在右邊出現的元素,這些元素不可能是碼。

LR為依賴關系中在兩邊都出現的元素,這些元素可能是碼,我們需要求閉包進一步判斷。

2.使用閉包求候選碼

因為L有CE兩個元素,LR有ABD三個元素,我們要求最小的依賴關系集,簡單來說求出候選碼的元素個數要最少,首先對CE求候選碼,如果CE直接是候選碼的話那么該集合關系候選碼就為CE,如果CE不是候選碼,則繼續求CE+,也就是ACE,BCE,CDE,用上述的方法進行求閉包,如果閉包的元素為U(全集:ABCDE),則該集合是一個碼。

CE:C啥子也不能推出,E啥子也不能推出~,所以自身閉包就是CE,而非U,因此CE不是碼

ACE:A→B,則此時閉包為ABCE,BC在ABCE中,BC→D,此時閉包仍然為ABCDE,即閉包為U,滿足碼的條件,ACE為碼,就不用繼續看完所有依賴了~

BCE:同理嘛,BC→D,此時閉包為BCDE,DE→A,此時閉包為ABCDE,即U,BCE為碼~

CDE:DE→A,此時閉包為ACDE,A→B,此時閉包為ABCDE,即U,所以CDE也為碼~

那么最后可以得出ACE,BCE,CDE為候選碼,也就是碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM