290 likes | 428 Views
第十章. 資料庫正規化. 章節概要. 10.1 為什麼要正規化 10.2 正規化是什麼 10.3 正規化準則. 正規化是什麼. 正規化是什麼?正規化是由 Codd 於 1972 年所提出。其目的在於建立一個良好的結構關聯,避免資料的重複,並確保資料的一致性和完整性,將資料結構單純化,使得單一次資料操作時,選取、新增、更新或刪除的變得相當的容易。. 正規化的型式. 第一階正規化型式 (First Normal Form ,簡稱 1NF) :刪除重複資料群組或多值屬性。
E N D
第十章 資料庫正規化
章節概要 • 10.1 為什麼要正規化 • 10.2 正規化是什麼 • 10.3 正規化準則
正規化是什麼 • 正規化是什麼?正規化是由Codd於1972年所提出。其目的在於建立一個良好的結構關聯,避免資料的重複,並確保資料的一致性和完整性,將資料結構單純化,使得單一次資料操作時,選取、新增、更新或刪除的變得相當的容易。
正規化的型式 • 第一階正規化型式(First Normal Form,簡稱 1NF):刪除重複資料群組或多值屬性。 • 第二階正規化型式(Second Normal Form,簡稱 2NF):刪除與部分主鍵相依。 • 第三階正規化型式(Third Normal Form,簡稱 3NF):刪除與非主鍵欄位相依。 • Boyce/Codd正規化型式(Boyce-Codd Normal Form,簡稱 BCNF):刪除相依於部分候選鍵。 • 第四階正規化型式(Forth Normal Form,簡稱 4NF):刪除多值相依。 • 第五階正規化型式(Fifth Normal Form,簡稱 5NF):刪除合併相依。
第一階正規化型式 • 符合第一階正規化型式的資料表,對其每一個資料列(Row)和欄位(Column)的交會,即欄位值必須是一個不可分割的單元值,換言之,第一階正規化的資料表裡不能含有重複的資料組或陣列作為資料值。
表10.3 訂貨單明細資料表 (不符合 1NF)(主鍵:訂單代號) 重複群組 應將重複部分分離成另一資料表以合乎1NF
表10.5 訂貨單主檔資料表 (符合 1NF)(但結構不良)
PK 重複群組 分離成明細部分 分成主分檔架構後滿足1NF 假設訂單代號+貨品代號唯一 圖10.6 主要/明細關聯圖(1NF)
PK 重複群組 分離成明細部分 分成主分檔架構後滿足1NF 訂單代號+項次唯一 圖10.7 主要/明細關聯圖(1NF)(使用項次)
第二階正規化型式 • 第二階正規化型式為所有的非鍵值欄位必須相依於完整的主鍵之下,換言之,資料表中的欄位不可以相依於複合主鍵的某部分主鍵,亦即限制部分相依。
PK 貨品名稱、包裝單位、單價和貨品代號部分相依 違反2NF 圖10.6 主要/明細關聯圖(1NF)
貨品名稱、包裝單位、單價和貨品代號部分相依拆解成一獨立資料表以滿足2NF貨品名稱、包裝單位、單價和貨品代號部分相依拆解成一獨立資料表以滿足2NF 圖10.9 刪除與部分主鍵相依後的關聯圖(2NF)
第三階正規化型式 • 第三階正規化型式除了需滿足第二階正規化型式的需求外,它要求所有非鍵值欄位不得相依於其他非鍵值欄位,亦即所有非鍵值欄位必須相依於主鍵值欄位;或者說不可存在遞移相依(Transitive Dependency)。
10.10 刪除非鍵值欄位與非鍵值欄位相依後的關聯圖(3NF)10.10 刪除非鍵值欄位與非鍵值欄位相依後的關聯圖(3NF) 客戶名稱和客戶代號(非PK欄位)相依拆解成一獨立資料表
BCNF正規化型式 • BCNF正規化型式可視為一個較嚴格的第三正規化,它要求所有的決定屬性必須是候選鍵。即所有非鍵值欄位要完全相依於候選鍵,而不可以功能相依於部分候選鍵之欄位。 • 由BCNF的要求,可以發現會發生違反BCNF正規化型式的時機為具有多組候選鍵且為複合鍵值時。
第四階正規化型式 • 第四階正規化型式的需求為滿足BCNF正規化型式,且沒有多重值相依。換言之,不允許存在主鍵和非主鍵之間擁有獨立的一對多關聯。
獨立1:N多值相依 違反4NF
第五階正規化型式 • 第五階正規化型式的需求為滿足第四階正規化型式,且沒有合併相依(Join Dependency)。換言之,將資料表盡可能分割為最小的資料表,以讓資料表中的所有資料都沒有重複出現的情形。由合併相依性的限制所延伸出的正規化型式稱為第五階正規化型式或投影合併正規化型式(Project-Join Normal Form; PJNF)。
合併相依 違反5NF
設計課程資料表和修課記錄資料表以合乎5NF (課程代號非唯一的設計)(複合主鍵)
設計課程資料表和修課記錄資料表以合乎5NF (課程代號唯一的設計)(單一主鍵)