一、概念的區分
有些人把面向對象的數據庫設計(即數據庫模式)思想與面向對象數據庫管
理系統(OODBMS)理論混為一談。其實前者是數據庫用戶定義數據庫模式的思路
,後者是數據庫管理程序的思路。用戶使用面向對象方法學可以定義任何一種
DBMS數據庫,即網絡型、層次型、關系型、面向對象型均可,甚至文件系統設計
也照樣可以遵循面向對象的思路。 面向對象的思路或稱規范可以用於系統分析
、系統設計、程序設計,也可以用於數據 結構設計、數據庫設計。OOSE自上至
下、自始至終地貫徹面向對象思路,是一個一氣呵成 的統一體。面向對象的數
據庫設計只是 OOSE 的一個環節。
二、數據庫設計的重要性
一般數據庫設計方法有兩種,即屬性主導型和實體主導型。屬性主導型
從歸納數據庫應用的屬性出發,在歸並屬性集合(實體)時維持屬性間的函數依
賴關系。實體主導型則先 從尋找對數據庫應用有意義的實體入手,然後通過定
義屬性來定義實體。一般現實世界的 實體數在屬性數 1/10 以下時,宜使用實
體主導型設計方法。面向對象的數據庫設計是從對象模型出發的,屬於實體主導
型設計。 一般數據庫應用系統都遵循以下相關開發步驟:
1設計應用系統結構;
2 選擇便於將應
用程序與DBMS結合的DBMS體系結構,如RDBMS;
3 根據應用程序使用的環境平台,選擇適宜的DBMS(如Oracle)和開發工具(如PB);
4 設計數據庫,編寫定義數據庫模式的SQL程序;
5 編寫確保數據正確錄入數據庫的用戶接口應用程序;
6 錄入數據庫數據;
7 運行各種與 數據庫相關的應用程序,以確認和修正數據庫的內容。
對以上各步驟,有幾點需要說明:
(1) 這不是瀑布模型,每一步都可以有反饋。
在公路局系統中,以上各步不僅有反饋、有反復,還有並行處理。比如一些
庫表在數 據錄入時,另一些庫表設計還在修改。這與我們的遞增式開發方法有
關,也與面向對象的 特征有關。
(2) 上述順序不是絕對的,大多數場合是從第三步開始的。
(3) 對大多數數據庫應用系統來說,上述各步中最重要、最困難的不是應用系統
設計而是數據庫設計。
三、DBMS的支持和數據庫設計
多數據庫應用系統開發者不重視數據庫設計的原因是:他們太迷信DBMS,認
為購入一個功能強大的DBMS後數據庫設計就不困難、不重要了。一些國內外的
數據庫教材常常 是在為DBMS的開發廠商做宣傳,而很少站在數據庫用戶角度,從
數據庫應用系統出發介紹數據庫設計方法。結果往往使讀者搞不清書中介紹的
是數據庫管理程序的設計思想,還是 應用這種 DBMS 進行數據庫設計的思想。
其實,DBMS只是給用戶為已采用的數據庫提供一個舞台,而是否使用這個舞台上
的道具以及唱什麼戲,則完全取決於用戶的戲劇腳本和導演(開發者)的安排。例
如,公路局系統所使用的數據庫管理系統,是以二維表為基本管理單元、支持所有
關系代數操作、支持 實體完整性與實體間參照完整性的全關系型RDBMS,而我們
要在這個舞台上利用上述"道具"設計一個面向對象的關系數據庫。
四、應用對象模型與RDBMS模型的映射
數據庫設計(模式)是否支持應用系統的對象模型,這是判斷是否是面向對象
數據庫系統的基本出發點。由於應用系統設計在前,數據庫設計隨後,所以應用
系統對象模型向 數據庫模式的映射是面向對象數據庫設計的關鍵。
1. 三層數據庫模式面向對象模型的擴展
一般數據庫設計多參照ANSL/SPARC關於數據庫模式的3層標准結構提案。
最接近物理數據庫的內部模式由DBMS提供的SQL來描述。概念模式可以由若干
個內部模式聚集而成 ,它是由數據庫用戶規范的一些表的集合。例如,公路局計
劃處數據庫模式、機務處數據 庫模式等,它們是邏輯數據庫,常常通過庫表ID來
界定庫邊界。一般的概念模式是數據庫 物理模式作用域的邊界,它能實現數據
庫的物理意義、特定DBMS 的特殊操作對外部應用 程序的信息隱蔽。外部模式
是從特定用戶應用角度看待的數據庫模式,從不同的應用出發對同一概念模式可
以給出多種不同的外部模式。例如