29
第第第 第第第第第第

第十章

  • Upload
    mayda

  • View
    20

  • Download
    0

Embed Size (px)

DESCRIPTION

第十章. 資料庫正規化. 章節概要. 10.1  為什麼要正規化 10.2  正規化是什麼 10.3  正規化準則. 正規化是什麼. 正規化是什麼?正規化是由 Codd 於 1972 年所提出。其目的在於建立一個良好的結構關聯,避免資料的重複,並確保資料的一致性和完整性,將資料結構單純化,使得單一次資料操作時,選取、新增、更新或刪除的變得相當的容易。. 正規化的型式. 第一階正規化型式 (First Normal Form ,簡稱 1NF) :刪除重複資料群組或多值屬性。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第十章

第十章

資料庫正規化

Page 2: 第十章

第十章 資料庫正規化 2

章節概要• 10.1  為什麼要正規化• 10.2 正規化是什麼• 10.3 正規化準則

Page 3: 第十章

第十章 資料庫正規化 3

正規化是什麼• 正規化是什麼?正規化是由 Codd 於 1972年所提出。其目的在於建立一個良好的結構關聯,避免資料的重複,並確保資料的一致性和完整性,將資料結構單純化,使得單一次資料操作時,選取、新增、更新或刪除的變得相當的容易。

Page 4: 第十章

第十章 資料庫正規化 4

正規化的型式1. 第一階正規化型式 (First Normal Form ,簡稱

1NF) :刪除重複資料群組或多值屬性。2. 第二階正規化型式 (Second Normal Form ,簡

稱 2NF) :刪除與部分主鍵相依。3. 第三階正規化型式 (Third Normal Form ,簡稱

3NF) :刪除與非主鍵欄位相依。4. Boyce/Codd 正規化型式 (Boyce-Codd Normal

Form ,簡稱 BCNF) :刪除相依於部分候選鍵。5. 第四階正規化型式 (Forth Normal Form ,簡稱

4NF) :刪除多值相依。6. 第五階正規化型式 (Fifth Normal Form ,簡稱

5NF) :刪除合併相依。

Page 5: 第十章

第十章 資料庫正規化 5

1NF 2NF 3NF BCNF 4NF

圖 9.22 正規化型式

5NF

Page 6: 第十章

第十章 資料庫正規化 6

第一階正規化型式• 符合第一階正規化型式的資料表,對其每一個資料列 (Row) 和欄位 (Column) 的交會,即欄位值必須是一個不可分割的單元值,換言之,第一階正規化的資料表裡不能含有重複的資料組或陣列作為資料值。

Page 7: 第十章

第十章 資料庫正規化 7

表 10.3 訂貨單明細資料表 ( 不符合 1NF)( 主鍵:訂單代號 )

訂單代號

訂單日期

客戶代號

客戶名稱

經手人 項次

貨品代號

貨品名稱

包裝單位

單價 數量

金額

10248

1996-07-04

VINET

山泰企業

劉天王

1 1042

糙米 每袋 3公斤

294 10

2940

2 1072

酸起司 每箱 24個 1044

5 5220

10249

1996-07-05

TOMSP

東帝望

黎國明

1 1014

沙茶 每箱 12瓶 558 9 5022

2 1051

豬肉乾 每箱 24包 1272

40

50880

10258

1996-07-17

ERNSH

正人資源

張瑾雯

1 1002

牛奶 每箱 24瓶 456 50

22800

2 1005

麻油 每箱 12瓶 510 65

33150

3 1032

白起司 每箱 12瓶 768 6 4608重複群組 應將重複部分分離成另一資料表以合乎 1NF

Page 8: 第十章

第十章 資料庫正規化 8

表 10.4 訂貨單主檔資料表 ( 不符合 1NF)

訂單代號

訂單日期

客戶代號

客戶名稱

經手人 貨品代號  

10248

1996-07-04

VINET 山泰企業 劉天王 1042 1072

  1024

91996-

07-05TOMSP 東帝望 黎國明 1014 1051

10258

1996-07-17

ERNSH 正人資源 張瑾雯 1002 1005 1032

Page 9: 第十章

第十章 資料庫正規化 9

表 10.5 訂貨單主檔資料表 ( 符合 1NF)( 但結構不良 )

訂單代號

訂單日期

客戶代號

客戶名稱

經手人 貨品代號一

貨品代號二

貨品代號三

10248

1996-07-04

VINET 山泰企業 劉天王 1042 1072

10249

1996-07-05

TOMSP 東帝望 黎國明 1014 1051

10258

1996-07-17

ERNSH 正人資源 張瑾雯 1002 1005 1032

Page 10: 第十章

第十章 資料庫正規化 10

訂單

代號

訂單

日期

客戶

代號

客戶

名稱

經手人

10248 1996-07-04 VINET 山泰企業 劉天王

10249 1996-07-05 TOMSP 東帝望 黎國明

10258 1996-07-17 ERNSH 正人資源 張瑾雯

訂單

代號

貨品

代號

貨品

名稱

包裝

單位

單價 數量 金額

10248 1042 糙米 每袋 3公斤 294 10 2940

10248 1072 酸起司 每箱 24個 1044 5 5220

10249 1014 沙茶 每箱 12瓶 558 9 5022

10249 1051 豬肉乾 每箱 24包 1272 40 50880

10258 1002 牛奶 每箱 24瓶 456 50 22800

10258 1005 麻油 每箱 12瓶 510 65 33150

10258 1032 白起司 每箱 12瓶 768 6 4608

訂貨單主檔

訂貨單明細檔

圖 10.6  主要 / 明細關聯圖 (1NF)

重複群組 分離成明細部分

分成主分檔架構後滿足 1NF

假設訂單代號 + 貨品代號唯一

PK

Page 11: 第十章

第十章 資料庫正規化 11

訂單

代號

訂單

日期

客戶

代號

客戶

名稱

經手人

10248 1996-07-04 VINET 山泰企業 劉天王

10249 1996-07-05 TOMSP 東帝望 黎國明

10258 1996-07-17 ERNSH 正人資源 張瑾雯

訂單

代號

項次 貨品

代號

貨品

名稱

包裝

單位

單價 數量 金額

10248 1 1042 糙米 每袋 3公斤 294 10 2940

10248 2 1072 酸起司 每箱 24個 1044 5 5220

10249 1 1014 沙茶 每箱 12瓶 558 9 5022

10249 2 1051 豬肉乾 每箱 24包 1272 40 50880

10258 1 1002 牛奶 每箱 24瓶 456 50 22800

10258 2 1005 麻油 每箱 12瓶 510 65 33150

10258 3 1032 白起司 每箱 12瓶 768 6 4608

訂貨單主檔

訂貨單明細檔

圖 10.7主要 / 明細關聯圖 (1NF)( 使用項次 )

PK

重複群組 分離成明細部分

分成主分檔架構後滿足 1NF

訂單代號 + 項次唯一

Page 12: 第十章

第十章 資料庫正規化 12

擴展非重複群組部分以去除重複群組的現象也可以滿足 1NF

Page 13: 第十章

第十章 資料庫正規化 13

第二階正規化型式• 第二階正規化型式為所有的非鍵值欄位必須相依於完整的主鍵之下,換言之,資料表中的欄位不可以相依於複合主鍵的某部分主鍵,亦即限制部分相依。

Page 14: 第十章

第十章 資料庫正規化 14

訂單

代號

訂單

日期

客戶

代號

客戶

名稱

經手人

10248 1996-07-04 VINET 山泰企業 劉天王

10249 1996-07-05 TOMSP 東帝望 黎國明

10258 1996-07-17 ERNSH 正人資源 張瑾雯

訂單

代號

貨品

代號

貨品

名稱

包裝

單位

單價 數量 金額

10248 1042 糙米 每袋 3公斤 294 10 2940

10248 1072 酸起司 每箱 24個 1044 5 5220

10249 1014 沙茶 每箱 12瓶 558 9 5022

10249 1051 豬肉乾 每箱 24包 1272 40 50880

10258 1002 牛奶 每箱 24瓶 456 50 22800

10258 1005 麻油 每箱 12瓶 510 65 33150

10258 1032 白起司 每箱 12瓶 768 6 4608

訂貨單主檔

訂貨單明細檔

圖 10.6  主要 / 明細關聯圖 (1NF)

貨品名稱、包裝單位、單價和貨品代號部分相依

違反 2NF

PK

Page 15: 第十章

第十章 資料庫正規化 15

訂單

代號

訂單

日期

客戶

代號

客戶

名稱

經手人

10248 1996-07-04 VINET 山泰企業 劉天王

10249 1996-07-05 TOMSP 東帝望 黎國明

10258 1996-07-17 ERNSH 正人資源 張瑾雯

訂單

代號

貨品

代號

數量 金額

10248 1042 10 2940

10248 1072 5 5220

10249 1014 9 5022

10249 1051 40 50880

10258 1002 50 22800

10258 1005 65 33150

10258 1032 6 4608

訂貨單主檔

訂貨單明細檔

貨品

代號

貨品

名稱

包裝

單位

單價

1042 糙米 每袋 3公斤 294

1072 酸起司 每箱 24個 1044

1014 沙茶 每箱 12瓶 558

1051 豬肉乾 每箱 24包 1272

1002 牛奶 每箱 24瓶 456

1005 麻油 每箱 12瓶 510

1032 白起司 每箱 12瓶 768

貨品資料檔

圖 10.9  刪除與部分主鍵相依後的關聯圖 (2NF)

貨品名稱、包裝單位、單價和貨品代號部分相依拆解成一獨立資料表以滿足 2NF

Page 16: 第十章

第十章 資料庫正規化 16

第三階正規化型式• 第三階正規化型式除了需滿足第二階正規化型式的需求外,它要求所有非鍵值欄位不得相依於其他非鍵值欄位,亦即所有非鍵值欄位必須相依於主鍵值欄位;或者說不可存在遞移相依 (Transitive Dependency) 。

Page 17: 第十章

第十章 資料庫正規化 17

訂單

代號

訂單

日期

客戶

代號

客戶

名稱

經手人

10248 1996-07-04 VINET 山泰企業 劉天王

10249 1996-07-05 TOMSP 東帝望 黎國明

10258 1996-07-17 ERNSH 正人資源 張瑾雯

訂單

代號

貨品

代號

數量 金額

10248 1042 10 2940

10248 1072 5 5220

10249 1014 9 5022

10249 1051 40 50880

10258 1002 50 22800

10258 1005 65 33150

10258 1032 6 4608

訂貨單主檔

訂貨單明細檔

貨品

代號

貨品

名稱

包裝

單位

單價

1042 糙米 每袋 3公斤 294

1072 酸起司 每箱 24個 1044

1014 沙茶 每箱 12瓶 558

1051 豬肉乾 每箱 24包 1272

1002 牛奶 每箱 24瓶 456

1005 麻油 每箱 12瓶 510

1032 白起司 每箱 12瓶 768

貨品資料檔

客戶名稱和客戶代號 ( 非 PK 欄位 ) 相依違反 3NF

Page 18: 第十章

第十章 資料庫正規化 18

10.10  刪除非鍵值欄位與非鍵值欄位相依後的關聯圖 (3NF)

客戶名稱和客戶代號 ( 非 PK 欄位 ) 相依拆解成一獨立資料表

Page 19: 第十章

第十章 資料庫正規化 19

BCNF 正規化型式• BCNF 正規化型式可視為一個較嚴格的第三正規化,它要求所有的決定屬性必須是候選鍵。即所有非鍵值欄位要完全相依於候選鍵,而不可以功能相依於部分候選鍵之欄位。

• 由 BCNF 的要求,可以發現會發生違反 BCNF 正規化型式的時機為具有多組候選鍵且為複合鍵值時。

Page 20: 第十章

第十章 資料庫正規化 20

指導教授資料表: 欄位(學號, 主修, 教授)

主鍵: (學號, 主修)候選鍵: (學號, 教授)

功能相依: 教授 決定 主修

圖 10.11 指導教授資料表

學號 主修 教授

b09003001 數學 王小敏

b09003003 心理學 陳定國

b09003005 數學 趙子宇

b09003007 數學 王小敏

b09003009 心理學 張自強

b09003009 數學 趙子宇

主修和候選鍵 ( 學號 , 教授 ) 中的教授部分相依違反 BCNF

Page 21: 第十章

第十章 資料庫正規化 21

學生指導教授資料表: 欄位(學號, 教授)

主鍵: (學號, 教授)

圖 10.12 指導教授資料表 (BCNF)

學號 教授

b09003001 王小敏

b09003003 陳定國

b09003005 趙子宇

b09003007 王小敏

b09003009 張自強

b09003009 趙子宇

教授 主修

王小敏 數學

陳定國 心理學

趙子宇 數學

張自強 心理學

教授指導主修資料表: 欄位(教授, 主修)

主鍵: 教授

Page 22: 第十章

第十章 資料庫正規化 22

第四階正規化型式• 第四階正規化型式的需求為滿足 BCNF 正規化型式,且沒有多重值相依。換言之,不允許存在主鍵和非主鍵之間擁有獨立的一對多關聯。

Page 23: 第十章

第十章 資料庫正規化 23

學號 主修 運動

b09003001 數學 游泳

b09003001 數學 網球

b09003003 心理學 網球

b09003005 數學 籃球

b09003007 數學 網球

b09003007 數學 游泳

b09003009 心理學 游泳

b09003009 數學 游泳

學生資料表: 欄位(學號, 主修, 運動)

主鍵: 學號唯一主鍵: (學號, 主修, 運動)

多值相依: 學號 → → 主修 學號 → → 運動

圖 10.13 學生主修與運動資料表

獨立 1:N多值相依

違反 4NF

Page 24: 第十章

第十章 資料庫正規化 24

學生主修資料表: 欄位(學號, 主修)

主鍵: 學號

圖 10.15 學生主修與運動資料表 (4NF)

學號 主修

b09003001 數學

b09003003 心理學

b09003005 數學

b09003007 數學

b09003009 心理學

b09003009 數學

學號 運動

b09003001 游泳

b09003001 網球

b09003003 網球

b09003005 籃球

b09003007 網球

b09003007 游泳

b09003009 游泳

學生運動資料表: 欄位(學號, 運動)

主鍵: 學號

Page 25: 第十章

第十章 資料庫正規化 25

第五階正規化型式• 第五階正規化型式的需求為滿足第四階正規化型式,且沒有合併相依 (Join Dependency) 。換言之,將資料表盡可能分割為最小的資料表,以讓資料表中的所有資料都沒有重複出現的情形。由合併相依性的限制所延伸出的正規化型式稱為第五階正規化型式或投影合併正規化型式 (Project-Join Normal Form; PJNF) 。

Page 26: 第十章

第十章 資料庫正規化 26

學生修課資料表: 欄位(學號, 系所, 課程)

主鍵: (學號, 系所, 課程)

圖 10.16 學生修課資料表

學號 系所 課程

b09003001 IM C101

b09003002 IM C102

b09003002 MIS C102

b09003002 MIS C103

b09003003 MIS C101

Page 27: 第十章

第十章 資料庫正規化 27

學號系所表: 欄位(學號, 系所)主鍵: (學號, 系所)

圖 10.17 分割及合併學生修課資料表

學號 系所

b09003001 IM

b09003002 IM

b09003002 MIS

b09003003 MIS

學號 課程

b09003001 C101

b09003002 C102

b09003002 C103

b09003003 C101

系所 課程

IM C101

IM C102

MIS C102

MIS C103

MIS C101

學號課程表: 欄位(學號, 課程)主鍵: (學號, 課程)

系所課程表: 欄位(系所, 課程)主鍵: (系所, 課程)

Join

學號 系所 課程

b09003001 IM C101

b09003002 IM C102

b09003002 MIS C102

b09003002 MIS C103

b09003003 MIS C101

合併相依

違反 5NF

Page 28: 第十章

第十章 資料庫正規化 28

圖 10.18 學生修課關聯資料表

課程資料表: 欄位(系所, 課程)主鍵: (系所, 課程)

學號 系所 課程 其他欄位

b09003001 IM C101

b09003002 IM C102

b09003002 MIS C102

b09003002 MIS C103

b09003003 MIS C101

b09003003 IM C102

修課記錄資料表: 欄位(學號, 系所, 課程)主鍵: (學號, 系所, 課程)連外鍵: (系所, 課程)

系所 課程 其他欄位

IM C101

IM C102

MIS C101

MIS C102

MIS C103

設計課程資料表和修課記錄資料表以合乎 5NF

( 課程代號非唯一的設計 )( 複合主鍵 )

Page 29: 第十章

第十章 資料庫正規化 29

設計課程資料表和修課記錄資料表以合乎 5NF

( 課程代號唯一的設計 )( 單一主鍵 )

圖 9.39 學生修課關聯資料表(課號唯一)

課程資料表: 欄位(課程,其他欄位)主鍵: (課程)

學號 課程 其他欄位

b09003001 IM-C101

b09003002 IM-C102

b09003002 MIS-C102

b09003002 MIS-C103

b09003003 MIS-C101

b09003003 IM-C102

修課記錄資料表: 欄位(學號, 課程,其他欄位)主鍵: (學號, 課程)連外鍵: (課程)

課程 其他欄位

IM-C101

IM-C102

MIS-C101

MIS-C102

MIS-C103