5:關聯表的正規化簡介

正規化理論

「正規化理論」(Normalization theory)目的是使關聯式資料庫的設計能讓資料重複性與相依性能夠降到最低,因為重複的資料會浪費磁碟空間,並產生維護方面的問題,不一致的相依性則會讓資料出錯誤,以下是錯誤的說明:

  1. 「資料重複」(Data redundancy)如果資料有多筆重複,可能產生資料不一致的情形。
  2. 「新增異常」(Insertion anomaly)例如產品的單價欄位設計在訂單資料表中,且訂單標號為此資料表的主鍵,則未接單時,產品價格無法輸入。
  3. 「刪除異常」(Deletion anomaly)刪除資料表中的某筆資料,可能也把一些重要欄位的資料也一併刪除。
  4. 「修改異常」(Update anomaly)例如某項目的價格變更,在修改時,由於有資料重複的現象,必須做多筆資料的更新才能完全修改。

正規形式

因此正規化即是作資料表的優化,但資料表的優化沒有標準答案,甚至在不同環境下會有不同的評價。資料庫正規化有一些規則,每條規則都稱為「正規形式」(Normal forms)。如果符合第一條規則,資料庫就稱為屬於「第一正規形式」。如果遵守前三條規則,資料庫就稱為屬於「第三正規形式」。以下說明正規化規則:

  1. 第一正規化(First Normal Form, 1NF):所有欄位只放單一值(Atomic Value)。
  2. 第二正規化(Second Normal Form, 2NF):每一非鍵值欄位「完全功能相依」(Functional Dependency)於主鍵,即不可「部分功能相依」於主鍵。
  3. 第三正規化(Third Normal Form, 3NF):每一非鍵值欄位非「遞移相依」(Transitive Dependency)於主鍵。
  4. Boyce-Codd正規化型式(Boyce-Codd Normal Form, BCNF):符合3NF且每一決定因素(Determinant)皆是候選鍵,簡稱為BCNF。
  5. 第四正規化(Fourth Normal Form; 4NF):符合BCNF,再除去所有的多值相依。
  6. 第五正規化(Fifth Normal Form; 5NF):符合4NF,且沒有合併相依。

觀念澄清

下列何者不正確?

  1. 資料庫正規化後可以減少資料重複性
  2. 資料庫正規化後可以加快資料的查詢速度
  3. 資料庫正規化可避免更新異常而造成不一致性
  4. 正規化步驟1NF是指所有欄位只放單一值(Atomic Value)

解答

( 2 )