關係建模核心概念
- 表** 是基礎元素,由相同結構的**元組** 組成,元組即**行**,包含多個**欄位**。
- 主鍵** 唯一識別每個元組,可為單欄或組合欄。
- 外鍵** 參考其他表主鍵,建立**關係**。
- 關係模型可直接轉換為資料庫結構(表、關係、表空間、索引等)。
UML 表達關係模型
類別圖對應
- 類別** ↔ 表
- 屬性** ↔ 欄位 (含資料型別、可空性、預設值)
- 關聯** ↔ 關係 (1:1、1:N、M:N)
- 關聯類別** ↔ 連接表 (M:N 關係的中間表)
- 約束** ↔ PK、FK、UNIQUE、CHECK
範例:汽車資訊表
Class Car {
LicenseNumber : String {id} -- PK
Brand : String
Model : String
Year : Integer
Color : String
}
5 筆資料,LicenseNumber 為主鍵,行無順序。
ER 建模 vs 關係建模
| 維度 | ER 建模 | 關係建模 |
| 焦點 | 問題領域分析 (實體、關係、約束) | 資料庫實現 (表、索引、分區、效能) |
| 產出 | 概念/邏輯模型 | 物理模型、DDL |
| 受眾 | 業務分析師、架構師 | DBA、開發人員、測試人員 |
ER 適合「做什麼」,關係建模解決「怎麼做」。兩者互補,不可混淆。
UML 建模最佳實踐
- 使用 型別模型 定義域資料型別 (如
EmailAddress、PhoneNumber),提升可讀性與一致性。
- 關聯端標註 多重性 (0..1, 1, 0..*, 1..*) 對應 FK 可空與基數。
- 利用 OCL (Object Constraint Language) 表達 CHECK 約束與業務規則。
- 建模工具 (Rational Rose, ER/Studio, PowerDesigner, PlantUML) 可正向產生 DDL、逆向工程現有資料庫。
- 文件化 命名規範 (表名單數、欄位駝峰/底線、PK 命名
PK_Table、FK 命名 FK_Child_Parent)。
從 UML 到 DB2 物理設計
- 表空間劃分:依存取模式分離熱/冷資料、索引/資料、大物件。
- 分區策略:Range (日期)、Hash (均勻)、MDC (多維)。
- 索引設計:PK 自動、FK 顯式、查詢欄位組合索引、
INCLUDE 覆蓋查詢。
- 壓縮:行壓縮 (ROWCOMPRESS)、值壓縮 (VALUE COMPRESSION)、XML 壓縮。