1. 程式人生 > >資料庫的三大正規化(較好理解版)

資料庫的三大正規化(較好理解版)

第一正規化(1NF):資料表中的每一列(每個欄位)必須是不可拆分的最小單元,也就是確保每一列的原子性

第二正規化(2NF):滿足1NF後,要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關係,也就是說一個表只描述一件事情;

例如:訂單表只描述訂單相關的資訊,所以所有欄位都必須與訂單id相關

產品表只描述產品相關的資訊,所以所有欄位都必須與產品id相 關;

因此不能在一張表中同時出現訂單資訊與產品資訊;如下圖所示(1張表拆成2張表)

 第三正規化(3NF):必須先滿足第二正規化(2NF),要求:表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴於主鍵);

【如何更好的區分三大正規化】

第 一正規化和第二正規化在於有沒有分出兩張表,第二正規化是說一張表中包含了多種不同的實體屬性,那麼要必須分成多張表, 第三正規化是要求已經分成了多張表,那麼一張表中只能有另一張表中的id(主鍵),而不能有其他的任何資訊(其他的資訊一律用主鍵在另一表查詢)。

總結:

第1正規化:每個表中都有1列,並且該列是不可拆分的最小單元

第2正規化:1張表只描述一件事情

第3正規化:用外來鍵做表的關聯

一個數據庫設計如果符合第二正規化,一定也符合第一正規化。如果符合第三正規化,一定也符合第二正規化