← 返回目錄

Chapter 9Designing Databases
設計資料庫

Learning Objectives 學習目標

  1. Describe the process of database design from conceptual to physical — 描述從概念設計到實體設計的資料庫設計流程
  2. Transform E-R diagrams into well-structured relations — 將 E-R 圖轉換為良好結構的關聯
  3. Explain normalization and its role in database design — 解釋正規化及其在資料庫設計中的角色
  4. Describe physical database design considerations — 描述實體資料庫設計的考量因素

Key Terms 關鍵術語

Logical Database Design
邏輯資料庫設計
將 E-R 圖轉換為關聯式資料庫結構的過程
Physical Database Design
實體資料庫設計
決定資料的實際儲存方式和存取方法的設計階段
Relation
關聯(表格)
二維表格,行代表記錄,列代表欄位
Primary Key
主鍵
唯一識別每筆記錄的欄位,不可重複且不可為 NULL
Foreign Key
外鍵
參照另一個表格主鍵的欄位,用於建立表格間的關聯
Normalization
正規化
透過分解表格來消除資料冗餘和更新異常的過程
First Normal Form (1NF)
第一正規形式
消除重複群組,確保每個欄位都是單一值(原子值)
Second Normal Form (2NF)
第二正規形式
符合 1NF 且消除部分相依,非鍵屬性必須完全依賴整個主鍵
Third Normal Form (3NF)
第三正規形式
符合 2NF 且消除遞移相依,非鍵屬性不可間接依賴主鍵
Functional Dependency
功能相依
一個屬性的值能唯一決定另一個屬性的值,記為 A→B
Transitive Dependency
遞移相依
若 A→B 且 B→C,則 C 遞移相依於 A
Anomalies
異常
資料冗餘導致的問題,包含插入異常、刪除異常和更新異常
Denormalization
反正規化
為了提升查詢效能,故意將已正規化的表格合併以加入受控的冗餘
Well-Structured Relation
良好結構的關聯
具有最少冗餘,允許使用者插入、刪除、修改資料而不產生錯誤或不一致
Mapping E-R to Relations
E-R 圖對應至關聯
將實體對應為表格、屬性對應為欄位、關係對應為外鍵或關聯表
One-to-Many Mapping
一對多對應
在「多」方的表格加入外鍵來參照「一」方的主鍵
Many-to-Many Mapping
多對多對應
建立一個關聯表(associative table)來處理兩個實體間的多對多關係
Index
索引
加速資料查詢的資料結構,類似書本的索引頁
Data Type
資料類型
定義欄位可儲存的資料種類,如整數、字串、日期等
Referential Integrity
參照完整性
確保外鍵值必須在被參照表格的主鍵中存在的約束條件
File Organization
檔案組織
資料在磁碟上的儲存方式,包含 Sequential、Indexed 和 Hashed 三種方式

Interactive Quiz 互動練習(共 30 題)

Q1. 資料庫設計的正確順序為何?
資料庫設計依序為概念設計(E-R 模型)、邏輯設計(轉換為關聯)、實體設計(決定儲存方式)
Q2. Logical Database Design 的主要工作是什麼?
邏輯資料庫設計的核心工作是將概念階段的 E-R 圖轉換為關聯式資料庫的表格結構
Q3. Primary Key 的主要功能是什麼?
Primary Key(主鍵)的主要功能是唯一識別表格中的每筆記錄,不可重複且不可為 NULL
Q4. Foreign Key 用於什麼目的?
Foreign Key(外鍵)參照另一個表格的主鍵,用於建立表格之間的關聯
Q5. 正規化(Normalization)的主要目的是消除資料冗餘和更新異常。
正規化透過分解表格來消除重複的資料(冗餘)以及插入、刪除、更新異常
Q6. 第一正規形式(1NF)要求消除什麼?
1NF 要求消除重複群組,確保每個欄位都是原子值(單一值)
Q7. 第二正規形式(2NF)要求消除什麼?
2NF 在符合 1NF 的基礎上,要求消除部分相依——非鍵屬性必須完全依賴整個主鍵
Q8. 第三正規形式(3NF)要求消除遞移相依。
3NF 在符合 2NF 的基礎上進一步消除遞移相依,非鍵屬性不可透過其他非鍵屬性間接依賴主鍵
Q9. 若 A→B 且 B→C,則 C 對 A 存在什麼關係?
當 A→B 且 B→C 時,C 透過 B 間接依賴 A,這就是遞移相依(Transitive Dependency)
Q10. Functional Dependency 是指一個屬性的值能唯一決定另一個屬性的值。
功能相依(Functional Dependency)記為 A→B,表示知道 A 的值就能唯一確定 B 的值
Q11. 以下哪一項不是資料異常(Anomaly)的類型?
資料異常包含三種:插入異常、刪除異常、更新異常。查詢異常不是標準的異常類型
Q12. 更新異常是指修改一筆資料時,必須同時修改多處相同的冗餘資料。
由於資料冗餘,同一資訊儲存在多處,更新時若未全部修改就會造成資料不一致
Q13. Denormalization(反正規化)的目的是什麼?
反正規化故意加入受控的冗餘,目的是減少 JOIN 操作以提升查詢效能
Q14. 反正規化會增加資料冗餘,但可以提升查詢效能。
反正規化是一種權衡,犧牲部分儲存空間和更新一致性來換取更快的查詢速度
Q15. Well-Structured Relation 的特徵為何?
良好結構的關聯具有最少冗餘,允許插入、刪除、修改而不產生錯誤或不一致
Q16. 在 E-R 圖轉換為關聯時,實體對應為什麼?
E-R 圖轉換時,實體(Entity)對應為表格,屬性對應為欄位,關係對應為外鍵或關聯表
Q17. 一對多(One-to-Many)關係的對應方式是在「多」方加入外鍵。
一對多關係透過在「多」方的表格中加入外鍵來參照「一」方的主鍵
Q18. 多對多(Many-to-Many)關係應如何對應?
多對多關係需要建立一個關聯表,包含兩個實體的主鍵作為外鍵
Q19. Index(索引)的主要功能是什麼?
索引是一種資料結構,能加速資料的搜尋和查詢,類似書本的索引頁
Q20. 索引可以加速查詢,但會增加資料插入和更新的成本。
每次插入或更新資料時,索引也需要同步維護,因此會增加寫入操作的開銷
Q21. Referential Integrity 確保什麼?
參照完整性(Referential Integrity)確保外鍵的值必須能在被參照表格的主鍵中找到對應值
Q22. Physical Database Design 決定資料的實際儲存方式和存取方法。
實體資料庫設計關注如何在磁碟上儲存資料、選擇檔案組織方式和建立索引等實際實作問題
Q23. 以下哪一項不是檔案組織(File Organization)的方式?
檔案組織的三種方式為 Sequential(循序)、Indexed(索引式)和 Hashed(雜湊式),Normalized 是正規化而非檔案組織方式
Q24. 在關聯(Relation)中,行代表記錄,列代表欄位。
關聯是二維表格,每一行(row/tuple)代表一筆記錄,每一列(column/attribute)代表一個欄位
Q25. 若一個表格符合 2NF,它一定也符合 1NF。
正規形式是漸進式的,2NF 以 1NF 為基礎,3NF 以 2NF 為基礎,因此符合 2NF 必定符合 1NF
Q26. 刪除異常是指什麼情況?
刪除異常是指刪除某筆記錄時,連帶刪除了其他仍然需要的相關資訊
Q27. 插入異常是指在沒有其他相關資料的情況下,無法新增某些資訊。
插入異常發生在因為缺少某些欄位值(如主鍵的一部分)而無法插入新記錄的情況
Q28. Data Type 定義欄位可儲存的資料種類,以下何者不是常見的資料類型?
INTEGER、VARCHAR、BOOLEAN 都是常見的資料類型,而 FOREIGN 不是資料類型,它是鍵的種類
Q29. E-R 圖中的屬性(Attribute)在轉換為關聯時會對應為表格的欄位。
E-R 圖轉換時,實體的屬性會成為對應表格中的欄位(Column)
Q30. 以下關於正規化的敘述,何者正確?
正規化將大表格分解為多個小表格,減少冗餘但增加表格數量。過度正規化可能因為需要多次 JOIN 反而降低查詢效能
得分:0 / 30