1. 程式人生 > >資料庫設計三正規化理解

資料庫設計三正規化理解

從資料庫理論上講,一共有8種正規化(normal form),分別是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。但是常見的是:1NF,2NF,3NF三個正規化。

1.1 第一正規化(1NF)

第一正規化(1NF):符合1NF的關係中的每個屬性都不可再分。第一正規化強調的是屬性的原子性,不可再分。

例子:

上面的表格中,“電話 ”列就違反了第一正規化,因為“電話”列可以繼續拆分,分成“手機”和“固定電話”。

1.2 第二正規化(2NF)

第二正規化(2NF):滿足第一正規化的要求並且每個非主關鍵字屬性完全函式依賴於主關鍵字的關係。

第二正規化適用於具有合成關鍵字的關係,即主關鍵字由兩個或兩個以上的屬性構成。主關鍵字僅包含一個屬性

的關係已經至少是2NF的。

例子:

上面的資料表示一個房屋租賃的記錄表,其中主鍵由“承租人”和“房屋編號”組成,而“房屋所在地”不是完全依賴於主鍵,而是部分依賴於主鍵,“房屋所在地”依賴於“房屋編號”,所以上面的資料表是不符合2NF的。

1.3 第三正規化(3NF)

第三正規化(3NF):滿足第一正規化和第二正規化的要求並且所有非主關鍵字屬性都不傳遞依賴於主關鍵字的關係。

例子:

上面的資料表中,主鍵是“學號”,但是“大學型別”不是直接依賴於主鍵“學號”,“大學型別”依賴於“大學”,然後“大學”依賴於“學號”,因此存在傳遞依賴的情況,因此上表不符合3NF。

2.參考文獻

《資料庫系統:設計、實現與管理(基礎篇)》 [英] 托馬斯·康諾利(Thomas Connolly),卡洛琳·貝格(Carolyn Begg) 著,寧洪 譯

《如何解釋關係資料庫的第一第二第三正規化?》劉慰的回答 https://www.zhihu.com/question/2469636