PowerDesigner是Sybase公司著(zhù)名的產(chǎn)品,我從16-bit的windows開(kāi)始,就接觸并使用這個(gè)工具,應該說(shuō)是有很深的感情。PowerDesigner是DBA和軟件架構師設計的利器,隨著(zhù)版本的不斷升級,PowerDesigner提供了更多更強大的功能。僅以本篇為開(kāi)始,向大家介紹一些PowerDesinger中的使用技巧,幫助大家更好地更有效率地使用這個(gè)CASE工具。
問(wèn)題的提出
我曾經(jīng)在很多網(wǎng)上看到有朋友問(wèn)起,在PowerDesigner的Physical Model design中,除了Oracle外,選擇其他數據庫模型,最后生成建數據庫腳本的時(shí)候,不會(huì )自動(dòng)生成記錄表和列注釋信息的數據庫腳本代碼。
請允許我先解釋一下這個(gè)問(wèn)題的概念,我們通過(guò)PowerDesigner設計oracle數據庫,最后得到的腳本可以像下面這樣,其中的comment語(yǔ)句就是我上面指出的在oracle中保存注釋信息的腳本語(yǔ)句,在oracle中執行后,可以通過(guò)查詢(xún)oracle的數據字典得到這些信息。這樣做的好處是,以后查看表結構比較方便,不需要從數據庫文檔資料中去尋找了,對于團隊開(kāi)發(fā)來(lái)說(shuō),有應用的意義。
/*===============================================*/
/* Table: EMP */
/*==============================================*/
create table EMP (
"EmpID" NUMBER,
"EmpName" VARCHAR2(50),
SEX CHAR(1)
)
/
comment on table EMP is ‘職員信息‘
/
comment on column EMP."EmpID" is ‘職員編號‘
/
comment on column EMP."EmpName" is ‘職員姓名‘
/
comment on column EMP.SEX is ‘性別 F:女 M:男‘
/
SQL Server也有這樣的語(yǔ)句,但是,大家往往發(fā)現選擇了數據庫模型是SQL Server,在自動(dòng)生成建庫腳本的時(shí)候,即使你選上了生成comment語(yǔ)句的選項,powerdesigner也不會(huì )幫你自動(dòng)生成,是PowerDesigner不支持SQL Server么,答案顯然是否定的。
問(wèn)題的解決
PowerDesigner這個(gè)工具可以支持任何一種關(guān)系型數據庫的模型設計,因為,在PowerDesigner中每一種數據庫模型的特性定義都存儲在一個(gè)xdb文件中,我們可以在[PowerDesigner_Install_Home]/Resource Files/DBMS下可以找到。當然,我們也可以自己創(chuàng )建一個(gè)新的xdb,定義好我們想支持的數據庫模型的特性。明白了這一點(diǎn),這個(gè)問(wèn)題的答案就顯而易見(jiàn)。
下面我就簡(jiǎn)單地說(shuō)明一下,我使用的是PowerDesinger9.5企業(yè)版。Sybase有些簡(jiǎn)化版本(如SQL Moduler)就不能自定義xdb,請大家注意。
1 從菜單TOOLS->RESOUCES->DBMS,進(jìn)入自定義數據模型,參見(jiàn)圖1。
圖1
2 PowerDesigner彈出一個(gè)對話(huà)框,列表框中列出了當前PowerDesigner支持的
數據庫模型(圖2)。我們選擇創(chuàng )建一個(gè)新的。輸入名字SQL SERVER 2000(EXTENDED),選擇從現有的SQL SERVER 2000復制,這樣SQL SERVER 2000(EXTENDED)就包含了原來(lái)SQL SERVER2000模型擁有的所有特征(圖3)。
圖2
圖3
3 接下來(lái),我們就需要為SQL Server 2000(Extended)添加支持自動(dòng)生成表和列注釋代碼的特性。PowerDesinger把定義的特性用樹(shù)狀結構組織了起來(lái)(圖4),本篇要做的工作就是定義Script代碼特征。我們需要修改Script\Objects\Table\TableComment和Script\Objects\Column\ColumnComment中的腳本特征代碼。
4 SQL Server 2000在數據庫中保存表和列注釋是通過(guò)調用系統存儲過(guò)程sp_addextendedproperty來(lái)做的。那么我們只需要,分別寫(xiě)上
表級的注釋代碼是:
EXECUTE sp_addextendedproperty N‘MS_Description‘, N‘%COMMENT%‘, N‘user‘, N‘%OWNER%‘, N‘table‘, N‘%TABLE%‘, NULL, NULL
列級的注釋代碼是
EXECUTE sp_addextendedproperty N‘MS_Description‘, N‘%COMMENT%‘, N‘user‘, N‘%OWNER%‘, N‘table‘, N‘%TABLE%‘, N‘column‘, N‘%COLUMN%‘
大家看看這些代碼,立刻就明白是怎么回事了(圖5)。%COMMENT%之類(lèi)的就是相當于替換變量,PowerDesigner在生成腳本的時(shí)候自動(dòng)替換設計模型中替換變量的值。
圖4
圖5
5 保存SQL Server 2000(Extended)成一個(gè)xdb文件。
6 現在,我們可以創(chuàng )建一個(gè)新的Physical Data Model了,數據庫模型選SQL Server 2000(Extended)。建立一個(gè)表,需要提醒的是,一定要指定一個(gè)數據庫使用者,一般用dbo(圖6)。我們可以為表和列都添加上注釋。
圖6
7 生成建庫腳本,菜單Databases->Generate Database。在圖7所示的對話(huà)框中,注意要選中comment選項。點(diǎn)擊確定,就得到最終的建庫腳本。打開(kāi)看看,我們看到了PowerDesinger根據我們告訴它的規則生成了對應的代碼
…
EXECUTE sp_addextendedproperty N‘MS_Description‘, N‘雇員信息‘, N‘user‘, N‘dbo‘, N‘table‘, N‘Employee‘, NULL, NULL
go
EXECUTE sp_addextendedproperty N‘MS_Description‘, N‘主鍵ID,自動(dòng)增加‘, N‘user‘, N‘dbo‘, N‘table‘, N‘Employee‘, N‘column‘, N‘EmployeeID‘
go
….
8 我們在SQL Server 2000中執行這個(gè)角本,然后通過(guò)Enterprise Manager可以看到這些注釋。
圖7
圖8
小結
通過(guò)這個(gè)實(shí)踐,我們可以了解PowerDesigner是如何處理不同數據庫的SQL語(yǔ)法差異的,這和我們開(kāi)發(fā)應用中的參數文件的思路基本一致。同時(shí),我們也應該認識到,PowerDesinger的功能還是比較多和復雜的,只有熟悉這個(gè)工具的功能使用,才能真真提高生產(chǎn)效率。