解釋DBMS中屬性的閉包


屬性x的閉包是關於F的所有對x函式依賴的屬性的集合。它用X+表示,表示X可以確定什麼。

演算法

讓我們看看計算X+的演算法

  • 步驟1 - X+ =X
  • 步驟2 - 重複直到X+不再改變
    • 對於F中的每個FD Y->Z
      • 如果Y ⊆ X+ 則X+ = X+ U Z

示例1

考慮一個關係R(A,B,C,D,E,F)

F: E->A, E->D, A->C, A->D, AE->F, AG->K.

找到E或E+的閉包

解決方案

E或E+的閉包如下:

  E+ = E
    =EA       {for E->A add A}
    =EAD      {for E->D add D}
    =EADC     {for A->C add C}
    =EADC     {for A->D D already added}
    =EADCF    {for AE->F add F}
    =EADCF    {for AG->K don’t add k AG ⊄ D+)

示例2

設關係R(A,B,C,D,E,F)

F: B->C, BC->AD, D->E, CF->B. 找到B的閉包。

解決方案

B的閉包如下:

B+ = {B,C,A,D,E}

閉包用於查詢R的候選鍵並計算F+

R的候選鍵:如果X->{R},則X是R的候選鍵

例如,

R(A,B,C,D,E,F) 其中F:A->BC, B->D, C->DE, BC->F. 然後,找到R的候選鍵。

解決方案

A+= {A,B,C,D,E,F}={R}=>A是一個候選鍵

B+= {B,D} => B不是候選鍵

C+= {C,D,E} => C不是候選鍵

BC+= {B,C,D,E,F} => BC不是候選鍵

F的閉包 (F+):F+是所有可以從F推斷/推匯出的FD的集合。透過在F上重複使用Armstrong公理,我們可以計算所有FD。

示例

R(A,B,C,D,E) 和F: A->B,B->C, C->D, A->E. 找到F的閉包

解決方案

A+= {A,B,C,D,E}

B+= {B,C,D}

C+= {C,D}

F+= {A->A, A->B, A->C, A->D, A->E, B->B, B->C, B->D, C->C, C->D}

更新於: 2021年7月3日

17K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告