環境
PowerDesigner 12.5
Windows XP 中文版
?
一、概念模型的重要性
?
PowerDeigner是最強大、最優秀的數據建模工具,是Sybase公司最偉大的產品。目前最新版本是12.5,從9一直用到現在,對PD的認識也是在逐步加深。
?
常常在工作中,看到大家用PD,都是用來建幾個表,實際上是做PDM,上來就干這個,實際上,這么用PD,是對強悍的PD一種侮辱。PD僅僅是這么玩的嗎?
?
數據庫設計的步驟是什么,難道上來稍稍想一下就搞個pdm出來?
?
下面簡單回顧下大學課本里講述的數據庫設計的基本步驟:???????
1、需求分析
從系統需求中尋找一些概念性名詞,并甄選,并對這些名詞相關屬性做了解,這部分是人工的,PD做不了什么。
2、概念結構設計
針對甄選的名詞進行分心,找出其中的關系(獨立的、一對一、一對多、多對多、繼承五種關系),并用E-R圖描述出來,這是大學課本的做法。在PD中,這個過程可以用CDM(概念模型)來描述,PDM中實體概念模型表示方式比E-R更清晰,更好。
3、邏輯結構設計
實際上就是設計表的結構和表之間的主外關系等。這部分在PD中對應的是PDM(物理模型),而PD中的物理模型一般都是直接從概念模型生成的。也就是說,只要你做好概念模型,物理模型就可以自動生成。
當然,這種生成結果一般都需要做一些調整和優化。
4、物理結構設計
有了PDM,數據庫的物理設計將不費吹灰之力,直接可以從PDM導出各種數據庫系統的建庫腳本。
5、數據庫的建立和測試
這個過程也很簡單,看看建庫腳本的執行就知道了。不合理了重新修改PDM,然后生成sql再來。
6、數據庫運行和維護。
這個一般是DBA的事情了,比如時間長了,數據量大了,在某些列上加上索引,調優等等。
1、需求分析
從系統需求中尋找一些概念性名詞,并甄選,并對這些名詞相關屬性做了解,這部分是人工的,PD做不了什么。
2、概念結構設計
針對甄選的名詞進行分心,找出其中的關系(獨立的、一對一、一對多、多對多、繼承五種關系),并用E-R圖描述出來,這是大學課本的做法。在PD中,這個過程可以用CDM(概念模型)來描述,PDM中實體概念模型表示方式比E-R更清晰,更好。
3、邏輯結構設計
實際上就是設計表的結構和表之間的主外關系等。這部分在PD中對應的是PDM(物理模型),而PD中的物理模型一般都是直接從概念模型生成的。也就是說,只要你做好概念模型,物理模型就可以自動生成。
當然,這種生成結果一般都需要做一些調整和優化。
4、物理結構設計
有了PDM,數據庫的物理設計將不費吹灰之力,直接可以從PDM導出各種數據庫系統的建庫腳本。
5、數據庫的建立和測試
這個過程也很簡單,看看建庫腳本的執行就知道了。不合理了重新修改PDM,然后生成sql再來。
6、數據庫運行和維護。
這個一般是DBA的事情了,比如時間長了,數據量大了,在某些列上加上索引,調優等等。
?
從中可以看到,一上來就建PDM,是不合理的。實際上要求對概念模型有個透徹理解了才去做PDM,這種理解可以不畫圖,但至少是心中有圖。
?
做CDM概念模型的好處是交流容易,全世界通用,誰看了都明白。你難道能用PDM的外鍵關系去看數據關系嗎,如果一個表上有多個外鍵,外鍵關聯像蜘蛛網一樣,就暈菜了,誰也看不明白!
?
二、?使用PD建立數據庫概念模型
?
1、一對一CDM
?
下圖描述了 一個系統用戶對應一個擴展信息,也可以沒有擴展信息。擴展信息依賴用戶信息的存在。并且一個擴展信息只能有一個用戶信息。
?
關系的設置:
?
將其生成PDM
?
?
2、一對多CDM
?
下圖CDM描述了一個公司有多個經理的模型,當然一個公司也可以沒有經理(老板是光桿司令)。但一個經理必須屬于一個公司。
關系的設置:
?
生成的PDM
?
3、多對多CDM
?
下面描述的是一個演員和角色的關系,一個演員可以演多個角色,一個角色可以由不同的演員來演,比如《紅樓夢》的林妹妹,小時候找個演員A來演,長大后的形象由演員B來演。
?
關系設置,多對多關系最簡單了,一般不需要設置:
?
生成的PDM如下:
?
?
4、繼承關系CDM
?
下圖描述的是一個繼承關系,比如有一個教務系統,用戶分學生老師,注冊時候,老師和學生填寫的信息由差異,但有公共信息。
?
?
關系配置,不需要,就集成關系,沒啥好設置的。
?
生成的PDM如下:
?
也許你會發現,五個呢,怎么才四個,呵呵,單表就獨立著和誰都沒關系,還用畫嗎?
?
三、總結
?
1、數據庫建模是系統設計中最重要一步,概念模型能很好的描述數據間的關系,還可以從概念模型精確生成符合一定標準范式的物理模型。
?
2、CDM能描述出更細微的數據關系,比如是0-n還1-n,這直接影響到數據業務上的約束,但是用PDM無法描述。CDM為業務交流節約了溝通成本。
?
3、CDM也為后來了解底層業務數據關系提供了依據,尤其是表很多很多時候,如果沒有CDM,那只有設計數據庫的人知道底層的關系了。
?
4、如果表很多,分模塊的情況,還可以講CDM分包來管理,這樣可以避免將所有的實體關系畫到一張圖中所帶來閱讀上煩惱。
?
5、PD還有其他很多很強悍的功能,比如數據庫反響到PDM,PDM導出腳本,PDM導出Java模型對象、XML模型。還可以生成DAO層的持久化代碼,甚至hbm文件,還可以做業務流程建模、生成數據字典報表等等。但PD最擅長的就是CDM-->PDM-->SQL,數據庫反向工程,報表功能,用好這些就不錯了。
?
本文出自 “ 熔 巖 ” 博客,轉載請與作者聯系!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
