資料庫設計是資訊系統成敗的關鍵,然而許多開發者混淆「面向對象資料庫設計(OO DB 設計)」與「面向對象資料庫管理系統(OODBMS)」。前者是使用者定義模式的思維方法,後者是 DBMS 內核的實作理論。本文澄清概念差異,闡述面向對象方法在關係資料庫(RDBMS)設計中的系統性應用,涵蓋三層模式擴展、物件模型映射規則、完整性約束對應與開發流程整合。
| 維度 | 面向對象資料庫設計 | OODBMS |
|---|---|---|
| 定義 | 使用者以 OO 思維定義資料庫模式 | DBMS 內核支援物件儲存/查詢的系統理論 |
| 適用 DBMS | 網狀、層次、關係、OO、甚至檔案系統 | 僅限物件導向資料庫產品 |
| 層級 | OOSE(物件導向軟體工程)的單一環節 | 系統分析、設計、程式設計的完整統一體 |
在系統開發七步驟中(架構設計 → DBMS 選型 → 具體 DBMS/工具選擇 → 資料庫模式設計 → 應用程式介面 → 資料灌入 → 測試驗證),資料庫設計是最重要、最困難的環節。許多團隊過度迷信強大 DBMS 的功能,忽略「舞臺再好,戲碼(模式設計)不好,照樣唱不出好戲」的道理。
ANSI/SPARC 三層模式(內部/概念/外部)在 OO 視角下的延伸:
String→VARCHAR、Integer→INT、Date→DATETIME、Enum→CHECK 約束。| 策略 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 單表繼承 | 查詢簡單、無 JOIN | 稀疏欄位多、違反 3NF | 淺層繼承、子類別屬性少 |
| 類別表繼承 | 正規化好、擴充性強 | 查詢需多表 JOIN | 深層繼承、子類別差異大 |
| 具體類別表 | 各表獨立、無 JOIN | 多型查詢困難、主鍵難保證全域唯一 | 無多型需求、高效能讀取 |
CHECK、觸發器、預存程序 ↔ 類別不變條件。不同於傳統瀑布模型,OO 方法論強調增量式開發:
面向對象的關係資料庫設計,不是將 OO 強行套用於關係模型,而是以物件模型為藍圖,系統性地推導出符合關係理論、滿足應用需求、支援演化維護的資料庫模式。掌握映射規則、理解三層模式擴展、重視迭代回饋,方能設計出「經得起時間考驗」的資料架構。