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

