Powerdesigner使用建議(完整版)
2024-07-21 02:38:51
供稿:網(wǎng)友
1.Powerdesigner使用建議
1.1業(yè)務(wù)規(guī)則的使用(Business Rule)
對(duì)于一些業(yè)務(wù)邏輯可能出現(xiàn)在多個(gè)數(shù)據(jù)表中,建議封裝成Business Rule,這樣便于業(yè)務(wù)邏輯的重新使用,也便于業(yè)務(wù)邏輯的維護(hù)。
為了便于維護(hù)業(yè)務(wù)邏輯,可以考慮將Business Rule和Domains結(jié)合起來(lái)使用。將業(yè)務(wù)Business Rule應(yīng)用到Domains上,然后再把Domains應(yīng)用到數(shù)據(jù)表的字段上。
例如:在拆遷項(xiàng)目中,拆遷業(yè)務(wù)部分,治理參數(shù)業(yè)務(wù)部分,房源業(yè)務(wù)部分,拆遷合同部分的數(shù)據(jù)表中都有樓層這個(gè)字段,因此先一個(gè)Business Rule,然后定義一個(gè)Domain,這樣相應(yīng)的數(shù)據(jù)表的字段就可以使用這個(gè)Domain了。
1.2.自定義數(shù)據(jù)類(lèi)型(Domains)的使用
oralce提供了一些內(nèi)置的數(shù)據(jù)類(lèi)型,但是用戶(hù)也可以根據(jù)業(yè)務(wù)的需要,定義自定義的數(shù)據(jù)類(lèi)型。
在自定義數(shù)據(jù)類(lèi)型里面包裝業(yè)務(wù)邏輯。
正如上面的房屋樓層,我們可以定義一個(gè)獨(dú)立的數(shù)據(jù)類(lèi)型(Domain)維護(hù),然后在相關(guān)數(shù)據(jù)表的字段上使用這個(gè)自定義數(shù)據(jù)類(lèi)型。
一般在定義自己的數(shù)據(jù)類(lèi)型時(shí)候,可以在Oracle基本類(lèi)型上定義,然后可以加上一些standard check或者Business Rules。
比如:在拆遷項(xiàng)目中,面積類(lèi)別這個(gè)字段在很多數(shù)據(jù)表都出現(xiàn)了,可以作為一個(gè)單獨(dú)的數(shù)據(jù)類(lèi)型類(lèi)維護(hù),定義一個(gè)” 面積類(lèi)別” Domains(包含的種類(lèi)有:0 --- 廳房面積,1 --- 使用面積,2 --- 單元面積,,3 --- 總建筑面積,4 --- 分?jǐn)偯娣e)。而且由于Powerdesigner的提供關(guān)聯(lián)作用,這樣便于當(dāng)業(yè)務(wù)邏輯發(fā)生了變動(dòng),能夠很快查詢(xún)出那些對(duì)象受到影響。
1.3序列號(hào)(Sequence)的使用
在powersigner的模型里面定義一堆了Sequence,接下來(lái)的是要把他們和數(shù)據(jù)表的相關(guān)字段關(guān)聯(lián)起來(lái),非凡是那些用于多個(gè)數(shù)據(jù)表字段的Sequence。
一個(gè)數(shù)據(jù)表原則上只答應(yīng)一個(gè)字段使用Sequence,并且在數(shù)據(jù)表的字段使用Sequence前,應(yīng)該把該Sequence添加到數(shù)據(jù)表的Extended Dependencies中。
假如一個(gè)數(shù)據(jù)表有2個(gè)字段或者更多字段使用了Sequence,那模型檢查時(shí)會(huì)給出提示信息。
使用的規(guī)則一般是只能應(yīng)用到數(shù)據(jù)表的主鍵字段上。
主鍵字段建議是 數(shù)據(jù)表+“ID“或者 “編號(hào)“構(gòu)成。
例如:“房屋整合面積“ 數(shù)據(jù)表,那它的主鍵字段=房屋整合面積編號(hào),對(duì)應(yīng)的Sequence為SEQ_房屋整合面積。其它數(shù)據(jù)表可能也使用到了這個(gè)Sequence,那也需要在使用前設(shè)置引用關(guān)系。
?。ㄔ跀?shù)據(jù)表的Extended Dependencies 上設(shè)置引用關(guān)系)
1.4 Oracle Package的使用
在Oracle Package里面可以定一些PRocedure ,但是Oracle包引用的數(shù)據(jù)庫(kù)對(duì)象到底有哪些呢,這些信息建議手動(dòng)維護(hù)起來(lái)。非凡是Oracle Package使用了哪些數(shù)據(jù)表,視圖,以及Oracle Packag等信息建議維護(hù)起來(lái)。
1.5包的使用
PowerDesigner的包相當(dāng)于文件夾。用戶(hù)可以把它當(dāng)作一個(gè)維護(hù)業(yè)務(wù)邏輯的容器。PowerDesigner包一般建議按照業(yè)務(wù)模塊來(lái)建立。假如模塊需要細(xì)分,可以考慮建立PowerDesigner子包來(lái)完成。
建議容器里保存的是模型對(duì)象的快捷方式。原始信息建議不要放到容器里面。因?yàn)樵谝前堰@些信息放到容器里,在PowerDesigner的模型合并或者逆向工程時(shí),這種方式的信息可能得不到維護(hù)。
PowerDesigner的包下面的PhysicalDiagram,建議采用象ERWin的Subject Area那樣,按照某個(gè)主題或者業(yè)務(wù)角度的方式來(lái)組織PhysicalDiagram包含的對(duì)象,使得每個(gè)PhysicalDiagram的功能明確。
1.6.視圖(View)的使用
視圖一般是數(shù)據(jù)表或者視圖上建立得來(lái)的(當(dāng)然也可能引用了某個(gè)存儲(chǔ)過(guò)程)。一般視圖的模型中應(yīng)該維護(hù)視圖的數(shù)據(jù)來(lái)源的引用信息。
在我們現(xiàn)在的項(xiàng)目中數(shù)據(jù)庫(kù)模型沒(méi)有對(duì)視圖進(jìn)行維護(hù),為此需要在建立視圖的Powerdesigner
模型。
我在Powerdesigner9.5環(huán)境下通過(guò)逆向工程不能夠獲得視圖(view)的腳本,通過(guò)修改相關(guān)配
置參數(shù),還是不能夠獲得腳本。
可以通過(guò)以下2方法獲得視圖(view)的腳本。
方法1:使用powerdesigner8.0的逆向工程獲得視圖的腳本,然后在Powerdesigner9.5中把視
圖的模型合并進(jìn)來(lái),這樣就可以對(duì)視圖進(jìn)行維護(hù)了。
方法2:使用Erwin逆向工程獲得視圖的Erwin模型,然后再把模型保存為ERX類(lèi)型的文件
在Powerdesigner9.5中導(dǎo)入該文件,然后進(jìn)行合并模型就可以了
PowerDesigner的視圖模型處理能力比較差,不能構(gòu)維護(hù)視圖的依靠關(guān)系(也就是建立視圖對(duì)數(shù)據(jù)源的依靠關(guān)系),這一點(diǎn)明顯不如ERWin。
1.7.同義詞(synonym)的使用
同義詞相當(dāng)于給數(shù)據(jù)庫(kù)對(duì)象一個(gè)別名,提供了位置和數(shù)據(jù)的獨(dú)立性。在跨數(shù)據(jù)庫(kù)用戶(hù)訪(fǎng)問(wèn)對(duì)象時(shí),可以考慮建立同義詞結(jié)合權(quán)限分配,簡(jiǎn)化數(shù)據(jù)庫(kù)對(duì)象的訪(fǎng)問(wèn)。
1.8.?dāng)?shù)據(jù)表的使用
數(shù)據(jù)表的注釋語(yǔ)句的更新。
業(yè)務(wù)背景:
在我們的項(xiàng)目中,Erwin模型中的數(shù)據(jù)表的注釋語(yǔ)句沒(méi)有同步到Oracle數(shù)據(jù)庫(kù)?,F(xiàn)在需要更數(shù)據(jù)庫(kù)中的數(shù)據(jù)表的注釋語(yǔ)句。
可能可以采取的實(shí)現(xiàn)方法:
方法1:Erwin直接正向工程,但是從Erwin直接正向工程由于注釋語(yǔ)句中有回車(chē)符號(hào),更新會(huì)失敗。
方法2:假如把Erwin模型轉(zhuǎn)換成為powerdesigner模型再更新數(shù)據(jù)表的注釋語(yǔ)句,這樣就可以避免回車(chē)符號(hào)的問(wèn)題,按正常情況是可以行得通的,但是由于Erwin模型中的邏輯模型和物理模型不一致,甚至它們出現(xiàn)的順序不一致,這樣獲得powerdesigner模型就不正確了,生成的修改數(shù)據(jù)庫(kù)的腳本也就不正確了。
實(shí)際采用的方法:
把Erwin模型轉(zhuǎn)換成powerdesigner模型在Erwin中保存為ERX類(lèi)型,然后在PowerDesigner導(dǎo)入模型),并且把文件保存為PDM類(lèi)型(xml格式),刪除模型中的視圖,domains,Business Rule,reference等信息,只留下相關(guān)數(shù)據(jù)表本身的信息,然后把模型文件的后綴修改XML,并且采用XMLSPY生成這個(gè)文件的DTD文件,再采用java編寫(xiě)了一個(gè)基于SAX的程序去解析XML文件,把各個(gè)數(shù)據(jù)表以及字段的注釋語(yǔ)句提取出來(lái),然后更新數(shù)據(jù)庫(kù)中數(shù)據(jù)表和字段的注釋語(yǔ)句,這樣就可以了。
1.9.ERWin升級(jí)到PowerDesigner的相關(guān)問(wèn)題
1.9.1 Domain的升級(jí)
從Erwin3.52升級(jí)到PowerDesigner9.5時(shí),Domain信息和數(shù)據(jù)表的關(guān)聯(lián)關(guān)系會(huì)丟失,需要手動(dòng)重新添加2者間的關(guān)系。當(dāng)然可以通過(guò)編程修改PowerDesigner的模型文件,添加2者之間的關(guān)聯(lián)關(guān)系。一般的PowerDesigner模型文件較大,只要有個(gè)幾十張數(shù)據(jù)表肯定模型文件有1MB,建議采用SAX的方式添加信息。
注重:添加數(shù)據(jù)表字段使用的Domain時(shí)候,需要設(shè)置數(shù)據(jù)表對(duì)Domain的引用關(guān)系(也就是Extended Dependencies)。
1.9.2 Business Rule的升級(jí)
從Erwin3.52升級(jí)到Powerdesigner9.5,Business Rule的表達(dá)式(腳本)需要修改的,把所有的
Business Rule的表達(dá)式中的@column 修改成%COLUMN%
具體實(shí)現(xiàn)的方式,可以直接在Powerdesigner9.5里面修改;或者把模型保存為XML格式(文件類(lèi)為 .pdm),通過(guò)UltraEdit或者XMLSpy等工具來(lái)修改,一個(gè)查找替換舊搞定了。當(dāng)然的注重
只能修改<c:BusinessRules> </c:BusinessRules>里面的內(nèi)容,否則會(huì)修改一些不應(yīng)該修改的地方。
同Domain一樣,從Erwin3.52升級(jí)到PowerDesigner9.5時(shí),Business信息和數(shù)據(jù)表的關(guān)聯(lián)關(guān)系也會(huì)丟失。假如Business Rule 不是太多建議手動(dòng)修改模型文件。
1.9.3.Sequence的升級(jí)
.Sequence的升級(jí)建議采用和Domain的方式,編程實(shí)現(xiàn)維護(hù)。
1.9.4.物理圖的升級(jí)
從Erwin3.52升級(jí)到Powerdesigner9.5,物理圖同樣能夠倒入Powerdesigner9.5中,但是Powerdesigner9.5的升級(jí)功能有些問(wèn)題:在生成的物理圖中數(shù)據(jù)表的信息有些問(wèn)題:物理圖中的數(shù)據(jù)表的字段顯示不完全,而且很多時(shí)候數(shù)據(jù)表字段的類(lèi)型都不能顯示完全。我使用java采用sax的方式把升級(jí)后的模型文件進(jìn)行解析,然后重新生成物理圖中數(shù)據(jù)表的位置信息(數(shù)據(jù)表的2個(gè)坐標(biāo):左上角坐標(biāo),右下角坐標(biāo));另外根據(jù)業(yè)務(wù)需要可以生成自己的Powerdesigner9.5包并且可以創(chuàng)建物理圖,把數(shù)據(jù)表添加到物理圖上。
1.9.5.其他說(shuō)明
從Erwin3.52升級(jí)到Powerdesigner9.5,我寫(xiě)了一些java程序解決了相關(guān)問(wèn)題,假如哪位同行碰到相似的問(wèn)題
可以交流一下。
2.關(guān)于powerdesigner中的數(shù)據(jù)結(jié)構(gòu)的變更治理
目前拆遷項(xiàng)目中數(shù)據(jù)結(jié)構(gòu)的有些失控,在結(jié)合powerdesigner包的概念的基礎(chǔ)山上提出如下一些建議。
2.1.?dāng)?shù)據(jù)結(jié)構(gòu)按照業(yè)務(wù)模塊進(jìn)行維護(hù)
模型中所有的數(shù)據(jù)結(jié)構(gòu)都在一個(gè)文件中,而且在頂層文件夾中各個(gè)業(yè)務(wù)模塊維護(hù)的是數(shù)據(jù)結(jié)構(gòu)的快捷方式。
2.2.?dāng)?shù)據(jù)結(jié)構(gòu)按照其生命周期進(jìn)行分類(lèi)治理。
在各個(gè)業(yè)務(wù)模塊的包下面建立如下的包:
2.2.1臨時(shí)測(cè)試數(shù)據(jù)結(jié)構(gòu):
是一些當(dāng)前業(yè)務(wù)模塊測(cè)試時(shí)使用的數(shù)據(jù)結(jié)構(gòu),可以隨時(shí)被刪除
2.2.2討論中數(shù)據(jù)結(jié)構(gòu):
是數(shù)據(jù)結(jié)構(gòu)處于討論中,還沒(méi)有確定下來(lái)。
2.2.3需要更新的數(shù)據(jù)結(jié)構(gòu):
是數(shù)據(jù)結(jié)構(gòu)已經(jīng)確定下來(lái),但是還沒(méi)有更新到數(shù)據(jù)庫(kù)中。
2.2.4正式數(shù)據(jù)結(jié)構(gòu):
在數(shù)據(jù)庫(kù)中被業(yè)務(wù)正常使用的數(shù)據(jù)結(jié)構(gòu)
2.2.5作廢中的數(shù)據(jù)結(jié)構(gòu):
在數(shù)據(jù)庫(kù)中以前被業(yè)務(wù)正常使用,現(xiàn)在已經(jīng)不再使用,但是還沒(méi)有進(jìn)行被作廢的數(shù)據(jù)表中數(shù)據(jù)的遷移,沒(méi)有完全作廢的數(shù)據(jù)結(jié)構(gòu)。假如要把這些數(shù)據(jù)結(jié)構(gòu)進(jìn)行作廢,需要先進(jìn)行數(shù)據(jù)遷移,以及其他相關(guān)處理。
2.2.6已經(jīng)作廢的數(shù)據(jù)結(jié)構(gòu):
在數(shù)據(jù)庫(kù)已經(jīng)不再被使用的業(yè)務(wù)數(shù)據(jù)表,相關(guān)的數(shù)據(jù)遷移已經(jīng)完成,但是數(shù)據(jù)表還沒(méi)有刪除,相關(guān)的文檔沒(méi)有更新。