跳轉到

Database Normalization

Normalization is the process of minimizing redundancy from a relation or set of relations. Redundancy in relation may cause insertion, deletion, and update anomalies. So, it helps to minimize the redundancy in relations. Normal forms are used to eliminate or reduce redundancy in database tables.

1NF

每個欄位應僅包含一個值且具有唯一的名稱。1NF 有助於消除重複資料並簡化查詢。

未符合 1NF 的缺點:欄位的長度無法確定,因此必須要預留很大的空間,造成空間浪費。

2NF

符合 1NF

每一非鍵屬性(如:姓名、性別…)必須「完全相依」於主鍵(學號),即不可「部分功能相依」於主鍵

未符合 2NF 的缺點:資料表中產生許多重複的資料。除了浪費儲存的空間,更容易造成新增、修改及刪除資料時的異常狀況。

3NF

符合 2NF

各欄位與「主鍵」之間沒有「遞移相依」的關係。

假設我們有一個表格 EmployeeProjects,用來追蹤員工參與的專案以及專案的相關信息:

EmployeeID ProjectID HoursWorked ProjectManager
1 101 40 John
2 101 30 John
1 102 25 Jane
3 103 20 Bob

這個表格符合 2NF 的要求,因為每一個非主鍵屬性(HoursWorkedProjectManager)都完全依賴於整個候選鍵({EmployeeID, ProjectID})。但是,它不符合 3NF 的要求,因為ProjectManager(專案經理)屬性依賴於候選鍵的一部分,而不僅僅是主鍵。

為了使其符合 3NF,我們可以將表格拆分為兩個表格,分別是 EmployeeProjectsProjects

EmployeeID ProjectID HoursWorked
1 101 40
2 101 30
1 102 25
3 103 20
ProjectID ProjectManager
101 John
102 Jane
103 Bob

Reference