解釋DBMS中屬性的閉包
屬性x的閉包是關於F的所有對x函式依賴的屬性的集合。它用X+表示,表示X可以確定什麼。
演算法
讓我們看看計算X+的演算法
- 步驟1 - X+ =X
- 步驟2 - 重複直到X+不再改變
- 對於F中的每個FD Y->Z
- 如果Y ⊆ X+ 則X+ = X+ U Z
- 對於F中的每個FD Y->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}
廣告