資料庫三大正規化 Mysql

哪有長勝無敵發表於2020-11-27

資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。

1.第一正規化(1NF):列不可再分
1.每一列屬性都是不可再分的屬性值,確保每一列的原子性

2.兩列的屬性相近或相似或一樣,儘量合併屬性一樣的列,確保不產生冗餘資料

2.第二正規化(2NF)屬性完全依賴於主鍵
第二正規化(2NF)是在第一正規化(1NF)的基礎上建立起來的,即滿足第二正規化(2NF)必須先滿足第一正規化(1NF)。第二正規化(2NF)要求資料庫表中的每個例項或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以儲存各個例項的惟一標識。這個惟一屬性列被稱為主鍵

3.第三正規化(3NF)屬性不依賴於其它非主屬性 屬性直接依賴於主鍵
資料不能存在傳遞關係,即每個屬性都跟主鍵有直接關係而不是間接關係。像:a–>b–>c 屬性之間含有這樣的關係,是不符合第三正規化的。

比如Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)

這樣一個表結構,就存在上述關係。 學號–> 所在院校 --> (院校地址,院校電話)

這樣的表結構,我們應該拆開來,如下。

(學號,姓名,年齡,性別,所在院校)–(所在院校,院校地址,院校電話)

總結:三大正規化只是一般設計資料庫的基本理念,可以建立冗餘較小、結構合理的資料庫。如果有特殊情況,當然要特殊對待,資料庫設計最重要的是看需求跟效能,需求>效能>表結構。所以不能一味的去追求正規化建立資料庫。

相關文章