iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
Modern Web

MySQL,我的超人系列 第 23

Day23-MySQL-踏出資料庫設計的第三步-正規化

  • 分享至 

  • xImage
  •  

正規化

定義

將原關聯表格的,分解後的數個新表格,合併依然能得到相同的資訊。

1.降低降低資料的重覆
2.避免新增異常、刪除、修改異常

手段

1.去除重複的欄位資料

壞的資料庫設計:請看Day7-教你從資料表中插入數據-分級插入、資料庫規劃、商業邏輯章魚哥的例子

第一正規化(1NF)

定義

第一正規化(1NF)是資料庫正規化所使用的正規形式。第一正規化是為了要排除重複群的出現,要求資料庫的每一列的論域都是由不可分割的原子值組成

第一正規化

白話

1.每個欄位只能有一個單一值。

2.沒有任何兩筆以上的資料是完全重覆。

3.資料表中有主鍵, 而其他所有的欄位都相依於主鍵。

第二正規化(2NF)

定義

第二正規化(2NF)是資料庫正規化所使用的正規形式。規則是要求資料表裡的所有資料都要和該資料表的鍵(主鍵與候選鍵)有完全相依關係:每個非鍵屬性必須獨立於任意一個候選鍵的任意一部分屬性。如果有哪些資料只和一個鍵的一部份有關的話,就得把它們獨立出來變成另一個資料表。如果一個資料表的鍵只有單個欄位的話,它就一定符合第二正規化。

第二正規化

白話

1.符合第一正規化

2.非鍵屬性完全相依於主鍵

第三正規化(3NF)

定義

第三正規化(3NF)是資料庫正規化所使用的正規形式,要求所有非主鍵屬性都只和候選鍵有相關性,也就是說非主鍵屬性之間應該是獨立無關的。

第三正規化

白話

1.符合第二正規化

2.各欄位與主鑑沒有遞移相依

3.遞移相依範例:
  A→B,C,使得 A→C 且 C→B 的相依成立,則稱之 B 遞移相依於 A。 
  

第四正規化(4NF)

定義

第四正規化(4NF)是資料庫正規化中所使用的一種正規形式,是BC正規化之後的另一層次的正規化。第二正規化、第三正規化、BC正規化關注於屬性集合之間的函數相依;而第四正規化關注更一般形式稱作多值相依。

第四正規化

總結

正規化終究是理論,如果真的要全部用上恐怕有難度,原則上就是盡量減少結構上的重複性。

Day24-MySQL-索引


上一篇
Day22-MySQL-踏出資料庫設計的第二步-主/外鍵
下一篇
Day24-MySQL-索引
系列文
MySQL,我的超人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言