小聲bb:如果裏面有錯的地方請提出來~感激不盡XDDDD
一、定義
如果函數依賴集F滿足下列條件,則稱F爲一個極小函數依賴集,亦稱爲最小依賴集或最小覆蓋(minimal cover)。
(1)F中任一函數依賴的右部僅含有一個屬性
(2)F中不存在這樣的函數依賴X->A,使得F與F-{X->A}等價。
(3)F中不存在這樣的函數依賴X->A,X有真子集Z使得F-{X->A}∪{Z->A}與F等價。
最小依賴集不是唯一的,它與對各函數依賴及X->A中X各屬性的處置順序有關。
二、分析(求解方法)
對於條件(1),即將比如X->YZ,分解爲X->Y和X->Z。
(對於條件2和3爲了便於理解我寫出了簡便的理解方式,大家可以通過舉F和F-某個依賴集來驗證以加深理解)
對於條件(2),說明中不能有多餘的函數依賴,此處多餘即爲可以通過推導得到:比如F{A->B,B->C,A->C},則A->C爲多餘的。但是可以是{A->B,B->C,C->A},即把這個函數依賴刪去後剩下的F`與F不能相同。
對於條件(3),有兩種情況(因爲不唯一,但這兩種情況不能同時寫在一個中),即把這個能互推的函數依賴刪去後剩下的F`與F不能相同。:
1.中不存在可以互相依賴的,比如F{A->B,B->A},則其中一個爲多餘的,刪去其中一個。
2.條件中爲“真子集”,真子集不包含它本身,則可以是{A->B,B->A}。
三、實例
【實例1:求最小依賴集】
問題:已知F={A->B,B->A,B->C,A->C,C->A},求。
解答:
1.看條件(1):F函數依賴的右部都只含有一個屬性,滿足條件(1);
2.結合條件(2)和(3):
F中有 A->B,B->C,A->C,刪去A->C,得={A->B,B->A,B->C,C->A}
刪去B->A得={A->B,B->C,C->A};
留下所有可以相互推導的={A->B,B->A,A->C,C->A}
【實例2:判斷最小依賴集】
問題:U={A,B,C,D,E},判斷={A->B,B->C,(A,D)->E},={A->B,A->C,B->C,(A,D)->E,(A,B)->B}是否是最小依賴集。
解答:直接可以判斷出是最小依賴集,中有A->B,A->C,B->C,所以不是最小依賴集