圖5a:PowerDesigner中兩個表之間的關系
圖5b:Visio中兩個表之間的關系
這個圖顯示了如何把信息轉換成符號。強制的關系由一條實心垂直線(而不是橢圓)表示。某些工具用虛線表示可選的關系。關系中屬于“多”的這一邊用一個類似鳥爪的圖形表示,關系的基數在靠近它所描述的那一端顯示。
你可能已經注意到,Employee表沒有定義外鍵列。這個圖仍舊處于“概念設計”階段——此后,從概念圖到物理數據模型之間的轉換是必不可少的。大多數工具區分概念和物理數據模型——概念數據模型描述信息的需求,但不關注細節問題,例如索引和強制性的引用完整性。
有些時候,你可能要定義自我引用的表。自我引用的表一般用來描述層次型關系。如下面的圖形所示,大多數數據建模工具能夠處理這類關系。注意在這個例子中,雇員可以有零個或者一個上級——它使你能夠處理一些特殊的情況,比如總統沒有直接的上級。
圖6a:PowerDesigner中自我引用的表
圖6b:Visio中自我引用的表
四、圖的規劃
定義表和關系只是挑戰的一部分,圖的清楚明白同樣很重要。雖然一些工具提供自動布局能力,我還沒有看到過一個完善的實現。相反,你的目標應該是遵從“孔雀東南飛”這一規則(這里的“孔雀”是關系中代表“多”這一方的符號,它是連接到表的三條分叉線,象個鳥爪)。換句話說,子表應該位于父表的右方和下方。這種安排使得從邏輯上組織和理解數據模型更加方便。最重要、最高級別的表應該出現在左上角,讓級別較低的表出現在頁面的右下角。為了清楚起見,減少圖中交叉線的數量也是很重要的。正如Eberhardt Rechtin在The Art of Systems Architecting中強調的,“一個好的設計往往看起來很舒服”。如果無論怎樣安排,你的數據模型看起來都很混亂,那么,它可能正在告訴你數據模型本身有一些值得注意的問題。
圖7a:完整的ER圖(PowerDesigner)
圖7b:完整的ER圖(Visio)
五、從圖到數據庫
依賴于你所選擇的用來建立數據模型的軟件包,建模工具可能會根據模型生成SQL命令或直接修改數據庫模式。這種功能帶來了極大的便利;和使用ASCII格式的SQL腳本相比,這種方式有著許多優點。一些建模工具的功能適合于大量的數據庫類型,例如PostgreSQL、MySQL、Oracle、DB2,等等。對于簡單的數據庫修改,改動操作可以從建模工具通過ODBC直接完成。數據庫改動還允許以增量方式進行(例如,ALTER命令或創建命令,以及對特定表的更新命令)。當你第一次使用建模工具時,你可以查看建模工具生成的SQL,看看自己是否可以信任和認可建模工具對數據模型的解釋。一段時間之后,你就會熟悉建模工具對各種關系和表細節的解釋。
【結束語】數據建模是一種很好的軟件工程實踐。它能夠幫助你在正式編寫程序代碼之前規劃數據需求。在維護和改進系統的數據布局的過程中,數據建模同樣很有用。一些工具能夠讓這個過程變得非常簡單,能夠在你管理和設計數據庫系統的時候帶來極大的幫助。然而,根據你所需功能的不同,建模工具的價格也有著極大的差異。在不出現預算赤字的情況下,輕松掌握和運用數據建模技術的最好方法是,從小型的工具開始,然后逐漸深入和提高。
六、參考和資源
■ 工具
Sybase PowerDesigner - 一個高端數據建模工具。你可以下載一個45天試用版。
ERWin - 一個高端數據建模工具?上螺d試用版。
Rational Rose Enterprise - 一個高端UML工具,恰如其分的數據庫建模支持?上螺d試用版。
Visio Professional - 一個價格低廉的繪圖工具,可用來生成數據模型、UML圖等。企業版還支持針對各種數據庫的雙向工程能力。你可以訂購60天試用版的CD。
Dezign - 一個價格極其低廉的ERD建模工具。你可以下載一個有限制的試用版本。
ERD Tool List - 一個關于各種數據庫和UML建模工具的鏈接和資源的清單。
■ 參考
Database Design for the Web
Designing Databases
ERD Notation Summary
On-Line Database Books
Diagramming Methods
Introduction to ER Modeling
文章來源于領測軟件測試網 http://www.kjueaiud.com/