在一張表上,只應用一條規則也是很困難的,所有范式規則的原則就是后一級規則必須符合前一級規則。換句話說,如果一個設計符合第二范式,就必然符合第一范式。
第一范式--1NF
范式的第一條規則規定:
- 表是二維的,包含行和列,每一行必須有相同的列數;
- 表中的每個列都包含一個特性,列中的所有特性都必須有相同的類型;
- 每一行必須可以唯一標識。
要將平面數據轉化到第一范式,需要利用數據庫設計器創建另外一個表。重復的列要被刪除,相關的數據要放在第二個表中,使每一行都是唯一的。這條規則,用于減少橫向軸(列)上的冗余。
第二范式--2NF
這條規則規定,非鍵字段,不可依賴于主鍵的一部分,依賴于鍵值的字段要放到另一個表中。例如,如果一個表的主鍵,由兩個列組成,行中的其他列都必須依賴這兩個列,而不能只依賴其中一列。
為了符合第二范式,必須先滿足第一范式,然后找出與表主鍵有部分依賴關系的屬性,放在另一個表中。
在避免使用多列主鍵,或者刪除部分依賴的列后,就達到了第二范式。然后就進入第三范式。
第三范式--3NF
第一條規則規定,行必須有鍵值,以便于區分。3NF在1NF的基礎上進一步規定,任何行的唯一性都必須完全依賴于主鍵。第三范式是要減少縱軸(行)上的重復。
Boyce-Codd范式,第4范式與第5范式
Boyce和Codd構建了他們的標準--Boyce-Codd范式(BCNF)。這個范式是定義在前面討論的理想情況上的。在符合后面的范式之前,必須先滿足第一范式與第二范式,實際上,就是因為從第一范式到第二范式再到第三范式的改進過程中,催生了對BCNF的需要。通過對屬性的函數依賴的分解,就在一些實體間,產生了多對多關系。有時這會不精確地留下這樣一個狀態:在所參與的實體中,有一個或多個實體有重復的候選鍵。
非鍵屬性所依賴的屬性就是候選鍵。BCNF解決候選鍵內的依賴問題。第四范式和第五范式的冗長而復雜的數學理論一個簡單版本就是:第四范式和第五范式用來解決多對多關系。
文章列表