將原關聯表格的,分解後的數個新表格,合併依然能得到相同的資訊。
1.降低降低資料的重覆
2.避免新增異常、刪除、修改異常
1.去除重複的欄位資料
壞的資料庫設計:請看Day7-教你從資料表中插入數據-分級插入、資料庫規劃、商業邏輯章魚哥的例子
第一正規化(1NF)是資料庫正規化所使用的正規形式。第一正規化是為了要排除重複群的出現,要求資料庫的每一列的論域都是由不可分割的原子值組成
1.每個欄位只能有一個單一值。
2.沒有任何兩筆以上的資料是完全重覆。
3.資料表中有主鍵, 而其他所有的欄位都相依於主鍵。
第二正規化(2NF)是資料庫正規化所使用的正規形式。規則是要求資料表裡的所有資料都要和該資料表的鍵(主鍵與候選鍵)有完全相依關係:每個非鍵屬性必須獨立於任意一個候選鍵的任意一部分屬性。如果有哪些資料只和一個鍵的一部份有關的話,就得把它們獨立出來變成另一個資料表。如果一個資料表的鍵只有單個欄位的話,它就一定符合第二正規化。
1.符合第一正規化
2.非鍵屬性完全相依於主鍵
第三正規化(3NF)是資料庫正規化所使用的正規形式,要求所有非主鍵屬性都只和候選鍵有相關性,也就是說非主鍵屬性之間應該是獨立無關的。
1.符合第二正規化
2.各欄位與主鑑沒有遞移相依
3.遞移相依範例:
A→B,C,使得 A→C 且 C→B 的相依成立,則稱之 B 遞移相依於 A。
第四正規化(4NF)是資料庫正規化中所使用的一種正規形式,是BC正規化之後的另一層次的正規化。第二正規化、第三正規化、BC正規化關注於屬性集合之間的函數相依;而第四正規化關注更一般形式稱作多值相依。
正規化終究是理論,如果真的要全部用上恐怕有難度,原則上就是盡量減少結構上的重複性。
Day24-MySQL-索引