2009年3月27日 星期五

Normalization - 正規化


在系統分析與設計中,正規化是重要的一個步驟,尤其是關連式資料庫,是邏輯資料庫轉成實體資料庫不可或缺的一環。而在正規化之前,你必須清楚了解何謂主索引鍵(Primary Key)與何謂功能相依的觀念。

正規化藉著鍵值和函數相依提供我們分析關連式的架構。

The process of converting complex data structures into simple, stable data structure.

何謂功能性相依?「主鍵可以唯一決定其他屬性值,此稱為功能性相依。」


正規化的規則 [Rules of Normalization]
  • 第一階正規化
第一階正規化,我們稱其為First Normal Form,簡稱為1 NF。
第一階正規化的規則很簡單,「只需要符合每個欄位僅允許一個值或是每一個資料欄位皆是不能分割的值」。這樣的資料表稱為達成第一階正規化。

  • 第二階正規化
第二階正規化,我們稱其為Second Normal Form,簡稱2 NF。
第二階正規化的目標為「消除部分功能性相依」,須符合以下規則:
簡述為「須滿足第一階正規化,並所有欄位皆功能性相依於主鍵」。
嚴謹的要求:所有Second Normal Form都須符合下列規定中的最少一個條目。
1. The primary key consists of only one attribute
主鍵的唯一性
2. NO nonprimary key attributes exist in the relation
沒有非主鍵值
3. Every nonprimary key attribute is functionally dependent on the full set of primary key attribute
每個非主鍵值完全功能性相依於主鍵

  • 第三階正規化
第三階正規化,我們稱其為Third Normal Form,簡稱3NF。
第三階正規化目標為「消除遞移性相依」,須符合以下原則:
簡述為「所有非主鍵所引欄位間,不應該有功能性相依的關係」。
嚴謹的要求:須符合以下兩點
1. A relation is in third normal form (3 NF) if (1) it is in second normal form (2 NF) and (2) there are no functional (transitive) dependencies between two (or more) nonprimary key attribute.
3 NF條件為(1)必須是2NF且(2)沒有任何功能性相依於兩個非主鍵屬性上。
2. To convert a relation into 2NF, decompose the relation into new relations using determinants.
若轉化為2NF,分解關連成為新關連完全取決於自己決定。
換句話說,若真有操作上或資料庫上、需求上的認知確定,可憑自我決定是否進行3NF。

沒有留言: