如何求關係模式的候選碼

對於給定的關係模式R(A,A1,A2,…,An)和函數依賴集F,可以把屬性分爲以下四類

  • L類:僅出現在F中的函數依賴左邊的左部屬性
  • R類:僅出現在F的函數依賴右邊右部屬性
  • N類:在F的函數依賴左右邊均未出現的屬性
  • LR類:在F的函數依賴左右兩邊均出現的屬性

對於給定的關係模式R及其函數依賴集F,有以下結論

  • 若X(X ∈ R)是L類屬性,則X必爲R的任一候選碼的成員
  • 若X(X ∈ R)是L類屬性,且X+包含了R的全部屬性,則X必爲R的唯一候選碼
  • 若X(X ∈ R)是R類屬性,則X不在任何候選碼中
  • 若X(X ∈ R)是N類屬性,則X必爲R的任一候選碼成員
  • 若X(X ∈ R)是R的N類和L類屬性組成的屬性集,且X+包含了R的全部屬性,則X是R的唯一候選碼
  • 若X(X ∈ R)是LR類屬性屬性,則X可能爲R的任一候選碼的成員,也可能不爲R的任一候選碼成員

上面的內容過了一遍後,我們來用例子講解

關係模式R(A,B,C,D,E),函數依賴F(A→D,E→D,D→B,BC→D,CD→A),求R的候選碼

  1. 首先把屬性分類
由函數依賴F知:
	L類的屬性有C、E;
	R類的屬性沒有;
	N類的屬性沒有;
	LR類的屬性有:A、B、D。
  1. 設X代表L、N類屬性,Y代表LR類屬性
{C,E} ∈ X,{A、B、D} ∈ Y
  1. 求X+

因爲C→∅,所以C+ = ∅

因爲E → D,所以E+ = {DE};又因爲D→B,所以 E+ = {BDE}

因爲E → D,所以(CE)+= {CDE};又因爲D→B,所以 (CE)+ = {BCDE};又因爲CD → A,所以(CE)+ = {ABCDE}

故CE爲R的唯一候選碼


注意:如果X+中沒有R的全部屬性,即從Y中拿出一個屬性來和X中的屬性組合

假設上面X+中沒有R的全部屬性,即從Y中拿出屬性A

因爲C→∅,所以(AC)+ = ∅,所以AC不是R的候選碼
因爲E → D,所以(AE)+ = {ADE};又因爲D→B,所以 (AE)+ = {ABDE},所以AE不是R的候選碼
然後求(ACE)+,如果ACE不是候選碼,就重新從Y中選擇一個屬性組成BC、BE、BCE,依次類推

如果拿Y中的一個屬性求不出候選碼,就拿Y中的兩個屬性組合求


關係模式R(A,B,C,D,E,F),其函數依賴集F={AB→E,AC→F,AD→B,B→C,C→D}

  • L類屬性:A
  • R類屬性:E、F
  • LR類屬性:B、C、D
  • 令L類屬性的元素爲X,LR類的爲Y
  • X+ = A(A+ = A)
  • 從Y中取出一個元素B,與X結合得,(AB)+ = ABCDEF
  • 從Y中取出一個元素C,與X結合得,(AC)+ = ABCDEF
  • 從Y中取出一個元素D,與X結合得,(AD)+ = ABCDEF

故關係模式的候選碼有:AB、AC、AD

注:A單獨推導不出其它元素,因爲函數依賴集中,沒有A → ?,只有
A?→ 元素


哦對了,關係模式R的候選碼可以多個


歡迎大家關注下個人的「公衆號」:獨醉貪歡
後臺回覆「無腦死磕數據庫原理」即可獲得練習題

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