第三正規化的定義如下:
在符合第二正規化(2NF)的條件下,資料表中不應該存在傳遞依賴(Transitive dependency)。
所謂傳遞依賴,指的是一個非主鍵欄位,不是直接依賴於主鍵,而是透過另一個非主鍵欄位間接依賴主鍵。
舉個簡單的例子來說明:
假設欄位 A 是主鍵。
A → B(A 決定 B)
B → C(B 決定 C)
根據依賴的傳遞性,我們可以推出:A → C
這表示欄位 C 是透過欄位 B 間接依賴主鍵 A。這就是所謂的傳遞依賴。
在 3NF 中,這樣的情況是不被允許的。為了消除這種依賴關係,欄位 C 應該被移至一個獨立的表格中,與欄位 B 建立直接關聯。
當表格中存在傳遞依賴時,容易導致以下問題:
透過 3NF 的設計,我們可以將這些依賴關係拆開,使每個表格都只關心自己直接依賴主鍵的欄位,提升資料的一致性與可維護性。
第三正規化的核心在於消除所有非主鍵欄位對主鍵的間接依賴關係。透過良好的正規化設計,可以讓資料庫更加一致、結構清晰,未來在維護、擴充或查詢時都能受益。