我想找到下列函數依賴集的最小覆蓋:如何找到一組函數依賴的最小封面?
A -> BC
B -> C
A -> B
AB -> C
第一步:打破下來每個函數依賴的RHS成一個單一的屬性:
A -> B
A -> C
B -> C
A -> B
AB -> C
然後我將刪除兩個A -> B
,所以我們會得到:
A -> B
A -> C
B -> C
AB -> C
第二步驟:試圖從每個函數依賴的LHS(其LHS具有2個或多個屬性)刪除不必要的屬性:
爲AB -> C
,檢查是否有必要通過:
替換AB -> C
與B -> C
因此,如果B +含有C則A是不必要的:
B+ = B (B -> C)
= BC (so A is unnecessary)
檢查,如果B是必要的條件:
與A -> C
因此,如果A +含有C,則B是不必要的更換AB -> C
:
A+ = A (A -> B)
= AB (A -> C)
= ABC (so B is unnecessary)
現在,我們有:
A -> B
A -> C
B -> C
第三步驟:試圖除去不必要的函數依賴:
對於A -> B
檢查A +是否包含B而不使用A -> B
:
A+ = A (A -> C)
= AC (so A -> B is necessary)
爲A -> C
檢查,如果A +包含C時不使用A -> C
:
A+ = A (A -> B)
= AB (so A -> C is necessary)
爲B -> C
檢查,如果B +含有C不使用B -> C
:
B+ = B (so B -> C is necessary)
現在我們有:
A -> B
A -> C
B -> C
最後,組函數依賴具有共同LHS在一起:
A -> BC
B -> C
,所以我們可以說,這些函數依賴是一套最小覆蓋,是真的嗎?以及我們如何推斷出該集合的關鍵字?