什麼是功能依賴的最小集或FD的正規化覆蓋?
一組功能依賴 (FD) E 的最小覆蓋是一個與 E 等價的最小依賴集 F。
其正式定義如下:如果一組 FD F 滿足以下條件,則稱其為最小集:
F 中的每個依賴項在其右側只有一個屬性。
我們不能用依賴項 Y->A 替換 F 中的任何依賴項 X->A,其中 Y 是 X 的真子集,並且仍然有一組與 F 等價的依賴項。
我們不能從 F 中刪除任何依賴項,並且仍然有一組與 F 等價的依賴項。
正規化覆蓋稱為最小覆蓋,也稱為 FD 的最小集。如果 FC 中的每個 FD 都是:
- 簡單 FD。
- 左簡化 FD。
- 非冗餘 FD。
**簡單 FD** - X->Y 是一個簡單 FD,如果 Y 是單個屬性。
**非冗餘 FD** - X->Y 是一個非冗餘 FD,如果它不能從 F-{X->y} 中推匯出來。
**左簡化 FD** - X->Y 是一個左簡化 FD,如果 X 中沒有多餘的屬性。{多餘屬性:如果 XA->Y,則如果 X->Y,則 A 是多餘屬性}
示例
考慮一個查詢 F 的正規化覆蓋的示例。
給定的功能依賴如下:
A -> BC
B -> C
A -> B
AB -> C
最小覆蓋:最小覆蓋是與給定 FD 等價的 FD 集。
正規化覆蓋:在正規化覆蓋中,LHS(左側)必須是唯一的。
首先,我們將找到最小覆蓋,然後找到正規化覆蓋。
**第一步** - 將 RHS 屬性轉換為單一屬性。
A -> B
A -> B
B -> C
A -> B
AB -> C
A -> C
**第二步** - 刪除額外的 LHS 屬性
找到 A 的閉包。
A+ = {A, B, C}
A -> B
A -> B
B -> C
A -> B
A -> B
因此,AB -> C 可以轉換為 A -> C
A -> B
B -> C
**第三步** - 刪除冗餘 FD。
現在,我們將以上 FD 集轉換為正規化覆蓋。
A -> BC
B -> C
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP