1 / 28

第五章 關聯資料庫設計

第五章 關聯資料庫設計. 課前指引 前章我們已對資料庫最重要的兩個概念 --- 正規化與功能支配關係,作了詳盡的探討,本章將延伸其觀點,實際嘗試資料庫的設計。資料庫在設計之初,必須對其欄位架構 (Schema) 作周詳考量之安排,否則一定會發生資料遺失、累贅儲存、或障礙存取等類似憾事。本章將非常技術性地探討,如何對關聯表之欄位架構作最適當的設計。資料庫之正規化是設計的重要依據,本章將就各級正規化之定義、演算法、以實例作詳盡的敘述 。. 章節大綱. 5-1 簡介. 5-6 多值支配關係. 5-2 第一正規化. 5-7 第四正規化.

maeko
Download Presentation

第五章 關聯資料庫設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 關聯資料庫設計 課前指引 前章我們已對資料庫最重要的兩個概念---正規化與功能支配關係,作了詳盡的探討,本章將延伸其觀點,實際嘗試資料庫的設計。資料庫在設計之初,必須對其欄位架構(Schema) 作周詳考量之安排,否則一定會發生資料遺失、累贅儲存、或障礙存取等類似憾事。本章將非常技術性地探討,如何對關聯表之欄位架構作最適當的設計。資料庫之正規化是設計的重要依據,本章將就各級正規化之定義、演算法、以實例作詳盡的敘述。

  2. 章節大綱 5-1 簡介 5-6 多值支配關係 5-2 第一正規化 5-7 第四正規化 5-3 第二正規化 5-8 其他正規化 5-4 Boyce-Codd正規化 5-9 資料庫設計考量重點 5-5 第三正規化 備註:可依進度點選小節

  3. 5-1 簡介 • 前章我們已對資料庫最重要的兩個概念---正規化與功能支配關係,作了詳盡的探討,本章將延伸其觀點,實際嘗試資料庫的設計。資料庫在設計之初,必須對其欄位架構(Schema) 作周詳考量之安排,否則一定會發生資料遺失、累贅儲存、或障礙存取等類似憾事。

  4. 5-1 簡介 • 本章將非常技術性地探討,如何對關聯表之欄位架構作最適當的設計。資料庫之正規化是設計的重要依據,本章將就各級正規化之定義、演算法、以實例作詳盡的敘述。

  5. 5-2 第一正規化 • 將每一欄格內的資料單一化(Atomic),要使資料如原子般的不容再分解,如此建立的關聯表是謂 “第一正規化關聯表(First Normal Form Relation)”。

  6. 5-2 第一正規化 • 第一正規化(Normalizing) 關聯表,並不能保證是一個優良的設計,可能面對三項嚴重的問題: • (1) 資料重複(Repetition of Information),浪費儲存空間,浪費存取時間; • (2) 資料缺乏代表意義(Inability to represent certain Information),讀取之資料與要求不符,資料與資料之間缺乏連貫性; • (3) 資料失真(Loss of Information),不當的儲存造成資料無法順利讀取,甚至遺失不見。 • 如範例106~範例107

  7. 5-3 第二正規化 • 設有一關聯架構(Relation Schema)R,功能支配關係(Functional Dependencies)F,α→β 為F+之任意關係式,當此關聯架構R可常理滿足下列之一條件時,R是第二正規化(2NF)型式: • (1) α是候選索引鍵(Candidate Key) 且R = (α, β)。 • (2) R或α → β 均無 “部份功能支配關係(Partial Functional Dependencies)”。 • 如範例108~範例109

  8. 5-3 第二正規化 • 2NF分解演算法(Algorithm-5-3-2) • 設有一個第一正規化(1NF) 關聯表r,其架構為R,將R分解成2NF關聯架構之步驟為: • 1、如4-3-1節,求取欄位間之功能支配關係(Functional Dependency): • α、β為任意欄位,t1、t2為任意資料組(Tuples),當: if t1[α] = t2[α] then t1[β] = t2[β] 為真時,則有: α → β (即α對β之功能支配關係)。

  9. 5-3 第二正規化 • 2NF分解演算法(Algorithm-5-3-2) • 2、於任意關係式αi→βi、αj→βj中,如果有αi = αj,則建立關聯架構Ri-schema: • Ri-schema = (αi, βi, βj) 將R分解成Ri與R’ 兩組關聯架構(schemas),且有: R’-schema = R – (βi, βj ) Ri∩R’ = αi 再檢視R’ 繼續分解,R ← R’,直至R’= (αi , Null) 為止。 • 如範例110~範例112

  10. 5-3 第二正規化 • 2NF功能支配關係之維護 • 功能支配關係維護測試演算法(Algorithm-5-3-4): 設有關聯架構R,有功能支配關係F且均為常理功能支配關係式。R分解成R1, R2, …, Rn,其功能支配關係分別為F1、F2、…、Fn: • 如範例113~範例114 compute F+; for each Ri do begin Fi ← F+ 內對Ri有關的功能支配關係式; end F’ ← Null; for each Fi begin F’ ← F’∪Fi; end comput F’+; if (F’+ = F+) then return(true) else return(false);

  11. 5-4 Boyce-Codd正規化 • 設有一關聯架構(Relation Schema) R,功能支配關係(Functional Dependencies) F,α → β 為F+之任意關係式,其中 α  R 且 β  R,當此關聯架構R可常理滿足下列之一條件時,R是Boyce-Codd正規化(BCNF) 型式: • (1) α → β 其中β  α (如4-3-1節Trivial Functional Dependency) • (2) α是R之單元超級索引鍵(Super Key) (如1-4-1節) • 如範例115~範例116

  12. 5-4 Boyce-Codd正規化 • BCNF分解演算法(Algorithm5-4-2) • 設有一個非BCNF關聯表r,其架構為R,將R分解成BCNF之R1、R2、…、Rn,α → β為F+內合於BCNF定義之任意功能支配關係式: • 如範例117 while (R≠(α, Null ) or (R is not in Trivial Functional Dependencies)) do if (R is not in BCNF) then begin 於F+ 內找出合於BCNF定義之α → β 且 α∩β = Ø; Ri = (α, β); R ← R – β; end if end while

  13. 5-4 Boyce-Codd正規化 • BCNF功能支配關係之維護(Dependency Preservation) • 雖然範例117分解之各次關聯架構均可滿足:(1) BCNF定義,(2) 不失真聯結(Lossless Join),(3) 通過功能支配關係維護測試(Dependency Preservation)。但並非所有的BCNF次關聯表都可滿足此三項要求,本節將進一步探討之。 • 如範例118~範例120

  14. 5-5 第三正規化 • 設有一關聯架構(Relation Schema) R,功能支配關係(Functional Dependencies) F,α → β 為F+之任意關係式,其中 α  R 且 β  R,當此關聯架構R可常理滿足下列之一條件時,R是第三正規化型式: • (1) α → β 其中β  α。(如4-3-1節Trivial Functional Dependency) • (2) α 是R之超級索引鍵(Super Key)。(如1-4-1節) • (3) β – α 之任一欄位A,均被R之候選索引鍵(Candidate Key) 支配。 • 如範例121

  15. 5-5 第三正規化 • 3NF分解演算法(Algorithm5-5-2) • 設有一個非BCNF關聯表r,其架構為R,α → β為Fc內(如4-3-4節) 合於3NF定義之任意功能支配關係式,將R分解成3NF之R1、R2、…、Rn步驟為:如範例122 i ← 0; for each α → β in Fc if Rj無αβ (其中 1  j  i ) then begin i ← (i + 1); Ri = (αβ); end if Rj無R之任一個candidate Key (其中 1  j  i ) then begin i ← (i + 1); Ri ← R之任一個candidate Key; end return (R1, R2, …, Rn) 

  16. 5-5 第三正規化 • 3NF功能支配關係之維護(Dependency Preservation) • BCNF因要求嚴格,將R分解時,次關聯架構Ri往往無法通過功能支配關係維護之測試,而3NF因要求不嚴格,將R分解之次關聯架構Ri均可通過功能支配關係維護測試。 • 一般來言,需要將關聯架構R分解時,先以BCNF為分解目標,如果無法通過功能支配關係維護測試,則改以3NF為分解目標。 • 如範例123

  17. 5-5 第三正規化 • 3NF之缺點(Disadvantage of 3NF) • 一般來言,資料庫設計到第三正規化型式(3NF) 即已達到靈活流暢的存取要求,但還隱藏著一點憂慮來自重複值或Null值。此與5-2-1節所述不同,是來自“多值支配關係”。 • 在觀念認識上,我們曾於4-2-4節述及第三正規化型式(3NF) 的重要意義,是消除“遞移功能支配關係”。在3NF分解演算法(Algorithm5-5-2) 分解過程中,幾乎已將 “遞移功能支配關係”消除。但遇到“多值支配關係”時,將可能無法完全消除“遞移功能支配關係”,此時將造成重複值或Null值。如範例124~範例126

  18. 5-6 多值支配關係 • 設有一關聯表(Relation) r,關聯架構(Relation Schema) 為R,有多值支配關係(Multivalued Dependency) α ↠ β,其中 α  R、β  R,t1、t2、t3、t4為任意資料組(Tuples),如果有t1[α] = t2[α],則有(如圖): • t1[α] = t2[α] = t3[α] = t4[α] • t1[β] = t3[β] • t2[R−α−β] = t3[R−α−β] • t2[β] = t4[β] • t1[R−α−β] = t4[R−α−β]

  19. 5-6 多值支配關係 • 如果α ↠ β滿足R之所有欄位,則α ↠ β是R之 “當然多值支配關係(Trivial Multivalued Dependency)”,亦即: • α ↠ β is trivialif β  α or β∪α = R • 如範例127~範例128

  20. 5-6 多值支配關係 • 多值支配關係法則 • 設有一關聯表(Relation) r,關聯架構(Relation Schema) 為R,其功能支配關係和多值支配關係為D,且α  R、β  R、γ  R,則有: • (1) 複製法則(Replication Rule):如果有常理(Hold) 關係α → β,則有α ↠ β。 • (2) 互補法則(Complementation Rule):如果有常理關係α ↠ β,則有α ↠ R − α − β。 • (3) 多值擴充法則(Multivalued Augmentation Rule):如果有常理關係α ↠ β and wR and vR,則有wα ↠ vβ。 • (4) 多值遞移法則(Multivalued Transitivity Rule):如果有常理關係α ↠ β and β ↠ γ,則有α ↠ γ− β。

  21. 5-6 多值支配關係 • 多值支配關係法則 • (5)結合法則(Coalescence Rule):如果有常理關係α ↠ β and γβ and wR and w∩β = Ø and w → γ,則有α → γ。 • (6)多值聯集法則(Multivalued Union Rule):如果有常理關係α ↠ β and α ↠ γ,則有α ↠ βγ。 • (7)多值交集法則(Multivalued Intersection Rule):如果有常理關係α ↠ β and α ↠ γ,則有α ↠ β∩γ。 • (8) 多值差集法則(Multivalued Difference Rule):如果有常理關係α ↠ β and α ↠ γ,則有α ↠ β−γ and α ↠ γ−β。 • 如範例129

  22. 5-7 第四正規化 • 設有一關聯架構(Relation Schema) R,功能支配關係(Functional Dependencies) 與多值支配關係(Multivalued Dependencies) D,α ↠ β 為D+之任意關係式,其中 α  R 且 β  R,當此關聯架構R可常理滿足下列之一條件時,R是第四正規化(4NF) 型式: • (1) α ↠ β 是當然多值支配關係(Trivial Multivalued Dependency),如5-6-1節。 • (2) α 是R之單元超級索引鍵(如1-4-1節) • 比較BCNF定義,BCNF與4NF相似,差異在前者有α → β、後者有α ↠ β。如果R是4NF則必是BCNF;如果R不是BCNF則必不是4NF。

  23. 5-7 第四正規化 • 4NF分解演算法(Algorithm-5-7-2) • 設有一個非第四正規化關聯表r,其架構為R,將R分解成4NF之R1、R2、…、Rn,α ↠ β為D+內合於4NF定義之任意多值支配關係式或功能支配關係式: • 如範例130~範例133 while (R≠(α, Null ) or (R有Multivalued Dependencies)) do if (R is not in 4NF) then begin 於D+ 內找出合於4NF定義之α ↠ β 且 α∩β = Ø; Ri = (α, β); R ← R – β; end if end while

  24. 5-7 第四正規化 • 多值支配關係之維護 • 多值支配關係維護測試演算法(Algorithm-5-7-4):設有關聯架構R,有多值支配關係與功能支配關係D。R分解成R1, R2, …, Rn,且支配關係分別為D1、D2、…、Dn: compute D+; for each Ri do begin Di ← D+ 內對Ri有關的支配關係式; end D’ ← Null; for each Di begin D’ ← D’∪Di; end comput D’+; if (D’+ = D+ ) then return(true) else return(false); 

  25. 5-8 其他正規化 • 在資料庫設計上,第四正規化型式(4NF) 已可謂是 “超強(Ultimate) 正規化型式”,因其已將我們不易了解的多值支配關係(Multivalued Dependency) 納入其中,我們一般遇到的問題,以本章述及的各類正規化型式已可充分解決。

  26. 5-8 其他正規化 • 除此之外,尚有以多值聯結支配關係(Join Dependency) 設計之投影聯結正規化(Project-Join Normal Form簡稱PJNF),有些書稱其為第五正規化型式(5NF)。 • 另尚有以定義域支配關係(Domain Dependency) 設計之定義域索引鍵正規化型式(Domain-Key Normal Form簡稱DKNF)。

  27. 5-9 資料庫設計考量重點

  28. 本章結束 Q&A討論時間

More Related