函式依賴集的等價是什麼?
如果函式依賴 (FD) 集 F 的閉包中包含 E 中的每個 FD,則稱函式依賴集 (FD) F 覆蓋另一個函式依賴集 E;也就是說,如果可以從 F 推匯出 E 中的每個依賴項。
或者,我們可以說 E 被 F 覆蓋。如果 E+= F+,則兩個函式依賴集 E 和 F 等價。也就是說,如果 E 覆蓋 F 且 F 覆蓋 E,則 E 等價於 F。
為了確定 F 是否覆蓋 E,我們針對 E 中的每個 FD X->y 計算 F 相對於 X 的閉包 X+,然後檢查 X+ 是否包含屬性 Y。
示例
R=(A,B,C,D,E,F)
F1={A->BC, B->CDE, AE->F}
F2={A->BCF, B->DE, E->AB}
檢查 F1 和 F2 是否等價。
解決方案
檢查 F1 是否覆蓋 F2 -
A+={A,B,C,D,E,F} 包含 B,C,F
B+={B,C,D,E} 包含 D,E
E+={E} 包含 A,B
所以 F1 不覆蓋 F2。
因此,F1 和 F2 不等價。
示例
考慮另一個兩個函式依賴等價的示例。
R=(A,C,D,E,H)
F1={A->C, AC->D, E->AD, E->H},
F2={A->CD, E->AH}
檢查 F1 和 F2 是否等價?
解決方案
檢查 F1 是否覆蓋 F2 -
A+={A,C,D} 包含 C,D
E+={A,D,E,H} 包含 A,H
所以 F1 覆蓋 F2
檢查 F2 是否覆蓋 F1
A+={A,C,D} 包含 C
{ A,C}+={A,C,D} 包含 D
E+={A,C,D,E,H} 包含 A,D,H
所以 F2 覆蓋 F1。
因此,F1 和 F2 等價。
這可以用圖表表示如下 -
廣告