DBMS 中的功能依賴
什麼是功能依賴
功能依賴在DBMS中,顧名思義,是指表屬性之間相互依賴的關係。由E. F. Codd提出,它有助於防止資料冗餘,並瞭解不良設計。
為了徹底理解這個概念,讓我們假設 P 是一個具有屬性A和B的關係。功能依賴用->(箭頭符號)表示。
然後,以下將用箭頭符號表示屬性之間的功能依賴性:
A -> B |
以上表明以下幾點
示例
以下是一個示例,可以幫助更容易地理解功能依賴性:
我們有一個<Department>表,它有兩個屬性:DeptId 和 DeptName。
DeptId = 部門 IDDeptName = 部門名稱 |
DeptId 是我們的主鍵。在這裡,DeptId 唯一標識DeptName 屬性。這是因為,如果您想了解部門名稱,則首先需要擁有DeptId。
DeptId | DeptName |
001 | 財務部 |
002 | 市場部 |
003 | 人力資源部 |
因此,DeptId 和 DeptName 之間的上述功能依賴性可以確定為DeptId 功能依賴於DeptName:
DeptId -> DeptName |
功能依賴的型別
功能依賴有三種形式:
- 平凡功能依賴
- 非平凡功能依賴
- 完全非平凡功能依賴
讓我們從平凡功能依賴開始:
平凡功能依賴
當 B 是 A 的子集時,就會發生這種情況:
A ->B |
示例
我們正在考慮具有兩個屬性的相同的<Department>表來理解平凡依賴的概念。
以下是一個平凡的功能依賴,因為DeptId 是DeptId 和 DeptName的子集。
{ DeptId, DeptName } -> Dept Id |
非平凡功能依賴
當 B 不是 A 的子集時,就會發生這種情況:
A ->B |
示例
DeptId -> DeptName |
以上是一個非平凡的功能依賴,因為 DeptName 不是 DeptId 的子集。
完全非平凡功能依賴
當 A 與 B 的交集為空時,就會發生這種情況:
A ->B |
阿姆斯特朗公理功能依賴的性質
阿姆斯特朗公理性質是由 William Armstrong 在 1974 年提出的,用於推理功能依賴性。
該性質提出了一些規則,如果滿足以下條件,則這些規則成立。
- 傳遞性如果 A->B 且 B->C,則 A->C,即傳遞關係。
- 自反性A-> B,如果 B 是 A 的子集。
- 增強性最後一條規則表明:如果 A->B,則 AC->BC。
廣告