正規化的五個階段對應三種相依性
五個正規形式背起來像五條規則,其實是三種相依性各自對應的清理工作。看懂這張表就知道每一階段在問什麼、判準從哪裡來。
| 相依性 | 對應階段 | 拆成幾張 | 判準來源 |
|---|---|---|---|
| 函數相依(functional) | 1NF / 2NF / 3NF / BCNF | 兩張 | schema 的相依關係 |
| 多值相依(multi-valued) | 4NF | 兩張,且兩邊矩形完整 | 資料可直接驗 |
| 連接相依(join) | 5NF | 三張以上,兩張還原不回來 | 業務規則,資料看不出來 |
正規化的三個階段是同一個問句的三種問法 把 1NF~3NF 收斂成「這個欄位到底跟誰有關」。BCNF 仍在這條線上(把判準從主鍵換成候選鍵);但 4NF 之後問句換了,問的是「這一組值跟誰有關」。
包含關係(愈後面愈嚴格):
5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF
兩個常被跳過的蘊含關係:
- 每條函數相依都是多值相依的特例 → 4NF 蘊含 BCNF。
- 多值相依就是「只有兩個成分的連接相依」→ 4NF 是 5NF 的特例。
所以這個順序不是硬湊的,是真的一層包一層。但愈高階不等於愈該做:BCNF 之後就要開始付代價(BCNF 保證無損 join,但不保證保持相依),而 5NF 的觸發條件在現實裡幾乎不成立(5NF 的判準不在資料裡,在業務規則裡)。