求最小函數依賴集


//新編數據庫原理習題與解析 李春葆

 

例:求F={ABD→AC,C→BE,AD→BF,B→E}的最小函數依賴集Fm

注意:當在函數依賴已經改變的地方開始一個新步驟時,重寫函數依賴集很重要,這樣可以在下一步中方便引用。

第一步    對F中的函數依賴運用分解原則來創建一個等價函數依賴集H,該集合中每一個函數依賴的右部是單個屬性:

H={①ABD→A,②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}

第二步  考察每一個函數依賴是否是必須的,去除非必要的函數依賴

(1)      ABD→A是平凡的函數依賴(就是A是ABD的子集,所以他是平凡的依賴),所以顯然是非必要的函數依賴,因此去除。保留在H中的函數依賴是H={②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}

(2)      考察ABD→C,去掉此函數依賴將會得到新的函數依賴集J={③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}。如果ABD→C是非必要的,則(ABD)J+=ABDFE,不包含C,因此ABD→C是必要的函數依賴,不能去掉。

H={②ABD→C,③C→B,④C→E,⑤AD→B,⑥AD→F,⑦B→E}

(3)   考察C→B,J={②ABD→C,④C→E,⑤AD→B,⑥AD→F,⑦B→E}(C)J+=CE,不包含B,因此C→B是必要的函數依賴,保留在H中。

(4)   考察C→E,J={②ABD→C,③C→B,⑤AD→B,⑥AD→F,⑦B→E}(C)J+=CBE,包含E,因此是不必要的,去除后得到的函數依賴集為

  H={②ABD→C,③C→B,⑤AD→B,⑥AD→F,⑦B→E}

(5)       同理考察函數依賴⑤、⑥和⑦,最后得到的函數依賴集為H={②ABD→C,③C→B,⑤AD→B,⑥AD→F,⑦B→E}。為了第三步方便引用,我們進行重新編號:

H={①ABD→C,②C→B,③AD→B,④ AD→F,⑤ B→E}。

第三步    考察每一個左部為多個屬性的函數依賴,看左部的每個屬性是否是必須的,能否用更小的屬性集替代原有的屬性集。

  首先從函數依賴①ABD→C開始。

(1)      去除A?如果A可以去除,那么可得到新的函數依賴集J={①BD→C,②C→B,③AD→B,④ AD→F,⑤ B→E}。去掉A后BD在J上的閉包將比在H下函數決定更多的屬性,如果(BD)J+=(BD)H+或者C∈(BD)H+,則說明去掉A得到的函數依賴集和原有的函數依賴集是等價的,可以用BD→C替換ABD→C。

(BD)H+=BDE,不包含C,所以A不能去掉。

(2)      去掉B?J={①AD→C,②C→B,③AD→B,④ AD→F,⑤ B→E} 。

(AD)H+=ADBC,包含了B,因此B→C是冗余的函數依賴,所以去除

(3)      去掉D?J={①A→C,②C→B,③AD→B,④ AD→F,⑤ B→E}。

因為H的函數依賴集在第三步發生了改變,因此我們需要回到第二步。

此時H={①AD→C,②C→B,③AD→B,④ AD→F,⑤ B→E}。

在進行第二步

其中考察到③,有(AD)H+=ADCB,包含B,因此AD→B是不必要的函數依賴,所以去除

最后

得到的函數依賴集為H={AD→C, C→B, AD→F, B→E}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM