1. 程式人生 > >MySQL優化(三) 表的設計

MySQL優化(三) 表的設計

1、什麼樣的表才符合3正規化(3 NF)?

表的正規化,是首先符合1正規化,才能滿足2正規化,進一步才能滿足3正規化;(現在最高級別是6正規化)

第一正規化:1NF 是對屬性的原子性約束,要求表的屬性(列)具有原子性,不可再分解;(只要是關係型資料庫[mysql/oracle/db2/sql server/sysbase等]都滿足1NF)

第二正規化:2NF 是對記錄的唯一性約束,即表中的記錄是唯一的,通過給表設定一個主鍵(不包含業務邏輯,一般是自增的);

第三正規化:3NF 是表中不包含冗餘資料,就是說表的資訊能被推匯出來,就不應該單獨的設計一個欄位來存放;比如下面的設計就不滿足 3NF:

 

有時候設計表會反三正規化,來提高效率;在表的1 對 N 的情況下,為了提高效率,可能會在 1 這邊表中增加冗餘欄位。例子如下:

統計學生參加哪些單位的活動