首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

關係模式函數依賴詳解:FD 分類、異常根因、分解策略與範式理論

     編輯:DB2 教學

關係模式函數依賴詳解:FD 分類、異常根因、分解策略與範式理論

關係模式 R(U, D, DOM, F) 簡化為 R(U, F),核心在於函數依賴集 F。FD 不當導致冗餘、插入/刪除/更新異常,範式理透過分解消除不良 FD。

一、函數依賴 (FD) 形式化定義

設 R(U) 關係模式,X,Y ⊆ U。若對任意合法關係 r,r 中不存在兩元組在 X 上相等而 Y 上不等,則稱 X 函數決定 Y,記 X → Y。

  • 語義範疇:如「姓名 → 年齡」僅在無同名人條件下成立。
  • 所有關係實例必須滿足。

二、FD 四大分類

類型定義記號例 (SC: Sno,Cno,Grade)
平凡 FDY ⊆ XX → Y(Sno,Cno) → Sno
非平凡 FDY ⊈ XX → Y(Sno,Cno) → Grade
完全 FDX → Y 且 ∀X'⊂X, X' ↛ YX F Y(Sno,Cno) F Grade
部分 FDX → Y 但 ∃X'⊂X, X' → YX P Y(Sno,Cno) P Sdept (因 Sno → Sdept)
傳遞 FDX → Y, Y ⊈ X, Y → Z, Z ⊈ YX → ZSno → Sdept → Mname ⇒ Sno → Mname

決定因素 = FD 左邊屬性組。X ↔ Y 表示雙向決定。

三、單一關係模式 Student(Sno, Sdept, Mname, Cname, Grade) 的弊端

F = { Sno→Sdept, Sdept→Mname, (Sno,Cno)→Grade }

  1. 數據冗餘大:同一系主任名重複存儲。
  2. 更新異常:修改系主任需更新所有該系學生行。
  3. 插入異常:無學生無法記錄新系主任。
  4. 刪除異常:刪除唯一學生導致系主任信息丟失。

根因:存在傳遞 FD (Sno → Sdept → Mname) 與部分 FD ((Sno,Cno) P Sdept)。

四、分解策略:消除不良 FD

S(Sno, Sdept)           FD: Sno → Sdept
SC(Sno, Cno, Grade)     FD: (Sno,Cno) → Grade
DEPT(Sdept, Mname)      FD: Sdept → Mname

分解後每模式**單一語義**、**無傳遞/部分 FD**、**達 3NF/BCNF**,實現「一事一地」。

五、範式層次與核心要求

範式核心要求消除目標
1NF屬性原子、無重複組非原子屬性
2NF非主屬性完全依賴主鍵部分 FD
3NF非主屬性不傳遞依賴主鍵傳遞 FD
BCNF主屬性也不部分/傳遞依賴主鍵內部依賴

實務以 **3NF/BCNF** 為標準,過度正規化增加 Join 成本,必要時保留受控冗餘 (如高頻聚合列)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved