一、閉包概念
1.函數依賴閉包
關係模式R<U,F>中F邏輯蘊含的函數依賴的全體,記作F+。
2.屬性閉包
屬性X關於F的閉包:屬性X屬於U,屬性X關於F的閉包爲函數依賴集F通過ArmStrong公理系統推導得到的A,其中X->A,通俗點就是X在ArmStrong公理系統下對函數依賴關係F能推出的所有屬性的集合,記作XF+。
舉個例子:關係模式R(U,F),U=ABC,F={A->B,B->C},A的閉包AF+={ABC}。
二、ArmStrong公理系統
1.內容
三個基礎推理規則A1,A2,A3,根據A1A2A3推出的三條推理規則。
2.完備性與有效性
ArmStrong公理的完備性及有效性說明:'導出'與'蘊含'是兩個完全等價的概念,所以F邏輯蘊含的函數依賴的全體可以等價說成,由F出發藉助ArmStrong公理導出的函數依賴的集合。這也是ArmStrong公理的主要作用:求F的閉包,求屬性X在F上的閉包。
三、等價及極小函數依賴集
每個函數依賴集均與一個極小函數依賴集等價,或者說任何一個函數依賴集F均可轉化爲一個極小函數依賴集。
爲什麼要轉化成極小函數依賴集?因爲是爲了在函數依賴功能不變的情況下刪除函數依賴集F中複雜冗餘的依賴條件,這裏的'函數依賴功能不變'即爲等價的概念,函數依賴集之間的等價,通俗理解爲'函數依賴集所包含的函數依賴條件在功能上是相同的',詳細的等價定義請參考書本,在這裏不贅述。
四、應用
1.求某屬性X關於函數依賴集F的閉包
原文地址:https://blog.csdn.net/Shishishi888/article/details/90213565
對於該算法結束條件的解釋:如果X(i+1)=X(i)或者X(i+1)=U即函數結束,這裏拿求AF+爲例,要明白X存儲的是A在函數依賴集F下所能推導出的值,X集合是逐漸擴充的,如果X(i+1)=X(i),說明兩次推導的結果是一樣的,可以認爲推導的是最終結果了(X集合無法再擴充)。如果X(i+1)=U,說明U的全部屬性均能被A推導出,直接結束。
2.將函數依賴集F極小化
原文地址:https://blog.csdn.net/Shishishi888/article/details/90214284
對於改算法第二步和第三步的解釋:
第二步:爲什麼要求閉包?
答:對於AB-->C而言,如果通過計算A屬性的閉包,發現A屬性能夠自己推導出C,那麼說明B屬性即無需存在,那麼修改成A-->C即可。
第三步:爲什麼要依次檢查每個語句?
答:拿語句A-->D來說,如果把語句拿掉後,剩下的函數依賴集F仍能有A-->D,那麼說明A-->D語句在函數依賴集F中就是冗餘的,應該刪除掉。