2020年4月22日 星期三

淺談資料庫正規化


資料庫正規化(Database normalization),

又稱資料庫正規化或資料庫的標準化,

主要目的有兩個:

  • 減少多餘的資料
  • 保持資料的一致性


第一正規化

去除了重複的項目,

一個欄位只能有一個值

例如:


訂單號碼
商品代號1
商品代號2
商品名稱1
商品名稱2


經過第一正規化後:

訂單號碼
商品代號1
商品名稱1
訂單號碼
商品代號2
商品名稱2




第二正規化

去除了部分相關性的欄位,

在上述的範例中

訂單號碼
商品代號1
商品名稱1
訂單號碼
商品代號2
商品名稱2

商品名稱為非key值,相對於商品代號屬於部分相關

所以必須去除並新增資料表以商品代號相關聯

訂單號碼
商品代號

商品代號
商品名稱

第三正規化

去除了遞移相關性欄位

範例改為:

商品代號1
商品名稱1
商品類別號1
商品類別名稱1
商品代號2
商品名稱2
商品類別號2
商品類別名稱1

此處的類別名稱屬於非KEY值得商品類別號,

這時必須將商品類別名稱去除並以商品類別號與上方資料表相關聯

商品代號1
商品名稱1
商品類別號1
商品代號2
商品名稱2
商品類別號2

商品類別號1
商品類別名稱1
商品類別號2
商品類別名稱1

其他還有更為進階的正規化步驟,

例如:BCNF 正規化,

這些進階的正規化步驟有時因為規定較為嚴格,

相對來說執行不易,

執行正規化後的效益也有爭議,

故單純就以三個基礎的正規化步驟作結,

這就是今天的主題:

資料庫正規化

沒有留言: