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