檢查給定關係中違反 2NF 的哪個函式依賴 (FD),並將 R 分解為 2NF
規範化是組織資料庫中資料的過程。它有助於消除資料庫中的重複值。規範化將大型表劃分為較小的表,並使用關係將它們連結起來。
正規化用於減少資料庫表中的冗餘。規範化是簡化記錄中資料元素之間關係的過程的名稱。
簡單來說:
規範化是組織資料以最小化的過程。
- 冗餘/重複。
- 插入、刪除、更新異常。
正規化
共有六種正規化,如下所示:
- 第一正規化 (1NF)
- 第二正規化 (2NF)
- 第三正規化 (3NF)
- Boyce-Codd 正規化 (BCNF)
- 第四正規化 (4NF)
- 第五正規化 (5NF)
問題
對於給定的關係 R(ABCDE) 和 F:{A->C,B->DE,D->C},檢查哪個函式依賴 (FD) 違反了 2NF,並將 R 分解為 2NF。
解決方案
在 2NF 中,關係必須處於 1NF。在第二正規化中,所有非鍵屬性都完全函式依賴於主鍵。當關系處於 1NF 且不存在部分依賴性時,該關係處於 2NF。
A+ = AC => A 不是候選鍵
B+ = BDEC => B 不是候選鍵
D+ = DC => D 不是候選鍵
AB+ = ACBDE => AB 是一個候選鍵
=> 鍵屬性 = A, B 和非鍵屬性 = C, D, E。
A->C 違反 2NF [因為 A->C 是部分依賴]
B->DE 違反 2NF [因為 B->DE 是部分依賴]
D->C 符合 2NF [因為 D->C 不是部分依賴]
2NF 分解如下:

我們考慮違反 2NF 的 FD,它們如下:
對於 A->C,R(ABCDE) 分解為 R1(AC) 和 R2(ABDE)
對於 B->DE,R2(ABDE) 分解為 R3(BDEC) 和 R4(AB)。
=> 關係 R 的 2NF 分解是 R1(AC)、R3(BDEC)、R4(AB)。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP