資料庫標準化與正規化

yuntui發表於2016-11-03

標準化是IT資料庫專業人士的戒律之一,資料建模工程師、資料庫管理員和SQL開發者都必須遵守這一戒律。我們很早就瞭解它的原理和正規化。

但是對大部分資料庫進行了解發現:它們至多執行了第三正規化(3NF)。很少有資料庫執行了更高正規化,如Boyce-Codd正規化(BCNF)、第四正規化(4NF)和第五正規化(5NF)。那麼,為什麼大多數資料庫設計員沒有超出3NF呢?

正規化簡介

為了回答上述問題,瞭解3NF、BCNF、4NF和5NF之間的區別很重要。以下為每個正規化的準確定義。

第一正規化(1NF

每個表必須有一個首要鍵,即最少的一組屬性,它與每條記錄一一對應。透過適當定義鍵屬性和非鍵屬性,刪除重複的組(不同記錄似乎需要不同次重複的資料種類)。注:每個屬性必須包含單獨一個值,而非一組值。

第二正規化(2NF

資料庫必須滿足1NF的所有要求。另外,如果一個表有一個複合鍵,所有屬性必須與整個鍵相關聯。而且,在表的多行之間多餘重複的資料被移動一個單獨的表中。

第三正規化(3NF

儲存在表中的資料不得依賴表的任何域,必須唯一依賴於首要鍵。資料庫必須滿足2NF的所有要求。既依賴首要鍵,又依賴其它域的資料被移動到一個單獨的表中。

Boyce-Codd正規化(BCNF

除對一個候選鍵擴充套件集(稱作一個超級鍵)存在屬性函式依賴外,不存在其它非平凡函式依賴。

第四正規化(4NF

除對一個候選鍵擴充套件集存在屬性組函式依賴外,不存在其它非平凡多值函式依賴。如果且只有一個表符合BCNF,同時多值依賴為函式依賴,此表才符合第四正規化。4NF刪除了不必要的資料結構:多值依賴。

第五正規化(5NF

不得存在不遵循鍵約束的非平凡連線依賴。如果且只有一個表符合4NF,同時其中的每個連線依賴被候選鍵所包含,此表才符合第五依賴。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127653/,如需轉載,請註明出處,否則將追究法律責任。

相關文章