函數依賴的公理化系統


阿姆斯特朗公理

包含規則

若屬性集Y屬於X, 則有屬性集Y函數依賴於X

傳遞規則

若屬性集A,B, C之間存在函數依賴關系A->B, B->C, 則A->C

增廣規則

若A->B則AC->BC

合並規則

若A ->B, A->C 則 A->BC

分解規則

若A->BC, 則A->B,A->C

偽傳遞規則

若A->B,XB->C則AX->C

集合累積規則

若A->BC, C->X則 A->BCX

閉包

函數依賴集的閉包

對於關系模式上R的函數依賴集F, 若F可以導出X->Y則稱F邏輯蘊含X->Y.

把F中的函數依賴關系, 及被F邏輯蘊含的函數依賴的集合稱為F的閉包, 記作\(F^{+}\)

計算關系R的函數依賴集F的閉包的步驟如下:

(1) 設最終將成為閉包的函數集為G,把G初始化為F

(2) 檢查G中的每一個函數依賴A->B,嘗試應用分解規則和增廣規則將新得到的依賴關系添加到G中

(3) 檢查G中所有函數依賴可能的組合, 嘗試應用傳遞規則和合並規則將新得到的依賴關系添加到G中

(3) 重復(2)直至全部添加

屬性集的閉包

閉包是由函數依賴集F導出的屬性集, 閉包中一個屬性A可以依據F導出其它所有屬性, 記作\((A)^{+}_{F}\)

下面給出數學定義:

設X和Y均為關系R的屬性集的子集,F是R上的函數依賴集,若對R的任一屬性集B,若X->B,必有B⊆Y,且對R的任一滿足以上條件的屬性集Y1 ,必有Y⊆Y1,此時稱Y為屬性集X在函數依賴集F下的閉包,記作\(X^{+}_{F}\)

如 f={a->b,b->c,a->d,e->f};由a可直接得到b和d,間接得到c,則a的閉包就是{a,b,c,d}

阿姆斯特朗公理為閉包的完備性和有效性提供了理論支持.

計算關系R的屬性集X的閉包的步驟如下:

(1) 設最終將成為閉包的屬性集是Y,把Y初始化為X

(2) 檢查F中的每一個函數依賴A->B,如果屬性集A中所有屬性均在Y中,而B中有的屬性不在Y中,則將其加入到Y中

(3) 重復(2)直到全部添加為止

函數依賴集的覆蓋

設F,G是關系模式R上的兩個函數依賴集, 若G屬於F的閉包\(F^{+}\), 則稱F覆蓋G.

F與G擁有相同的閉包,這一性質可以用來進行檢驗.

最小覆蓋(最小函數依賴集)

關系模式R(U,F)中,U=ABCDEG,F={B->D,DG->C,BD->E,AG->B,ADG->BC}

計算函數依賴集F的最小函數依賴集M步驟如下:

(1)右部分化為單屬性

{ADG->BC} ==>{ADG->B, ADG->C}

M ={B->D, DG->C, BD->E, AG->B, ADG->B, ADG->C}

(2) 掉左部冗余屬性

對於ADG->B可以看出 ‘ADG’ 去掉 ‘D’ 子屬性后 AG->B是仍然成立的, 所以‘D’被認為是冗余屬性,如此類推(左邊是單個屬性不用判斷), 得:

M = {B->D, DG->C, BD->E, AG->B}

(3) 去掉多余函數依賴

去掉F中某依賴關系(經過前兩步,一般只需要判斷左邊屬性為多個的關系),如去掉(DG->C)

(DG)+ = {D, G}, 缺少C, 不冗余。 所以求得:

M = {B->D, DG->C, BD->E, AG->B}

正則覆蓋 canonical cover

函數集F的正則覆蓋集Fc滿足條件:

  • F與Fc互相邏輯蘊含

  • Fc中任何函數依賴都不含無無關屬性

  • Fc中函數依賴的左半部分都是唯一的

若去除函數依賴中的屬性不會改變函數依賴集F的閉包,就稱該屬性是該函數依賴的無關屬性.

如AB->C, 若F蘊含\(F-\{AB->C\} \cup \{B->C\}\)即使用B->C替換AB->C不改變F的閉包.

若有函數依賴關系AB->C, \(A_{F}^{+}\)包含C, 則A是AB->C的無關屬性. 在FC中用B->C替換.

另一種形如A->BC的情況類似, 若用A->C替換AB->C不改變F的閉包, 則C為無關屬性.

示例:

在關系模式R<U, F>, U = {A, B, C}, F={A-> BC, B -> C, A -> B, AB -> C}

求F的正則覆蓋方法如下:

(1) 右部分分解為單屬性

G = {A -> B, A -> C, B -> C, AB -> C}

(2) 去掉左部無關屬性

兩邊都是單屬性的不必考慮, 求左側多屬性中任一屬性關於F的閉包.

對AB -> C,\((A)_{F1}^{+} = ABC\)即存在A->C,A為無關屬性故用B -> C替換之。

G = {A -> B, A -> C, B -> C}

(3) 去掉多余函數依賴

去掉可以由F1中其它關系導出的依賴關系.

對A -> C, 可以由A->B, A->C 導出去掉。

(4) 合並函數依賴

將左部相同的函數依賴進行合並, 保證左部唯一

G = {A -> B, B -> C}

依賴關系的分解

無損連接分解(lossess join)

關系模式R,其上的函數依賴集F.

若將關系R分解為R1, R2, 若R1, R2自然連接可以得到R, 則R1, R2為R的無損連接分解.

若將關系R分解為R1, R2. 若R1與R2屬性的交集是R的Super Key, 則R1, R2為R的無損連接分解.

保持依賴

關系模式R分解后的各個Ri上函數依賴集Fi並集的閉包等於原函數依賴集的閉包, 則該分解保持了函數依賴關系.


免責聲明!

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



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