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