如何讓PowerDesigner支援自動產生含SQL Server 2000的表和列注釋的角本

來源:互聯網
上載者:User

PowerDesigner是Sybase公司著名的產品,我從16-bit的windows開始,就接觸並使用這個工具,應該說是有很深的感情。PowerDesigner是DBA和軟體架構師設計的利器,隨著版本的不斷升級,PowerDesigner提供了更多更強大的功能。僅以本篇為開始,向大家介紹一些PowerDesinger中的提示,協助大家更好地更有效率地使用這個CASE工具。

問題的提出

我曾經在很多網上看到有朋友問起,在PowerDesigner的Physical Model design中,除了Oracle外,選擇其他資料庫模型,最後產生建資料庫指令碼的時候,不會自動產生記錄表和列注釋資訊的資料庫指令碼代碼。

請允許我先解釋一下這個問題的概念,我們通過PowerDesigner設計oracle資料庫,最後得到的指令碼可以像下面這樣,其中的comment語句就是我上面指出的在oracle中儲存注釋資訊的指令碼語句,在oracle中執行後,可以通過查詢oracle的資料字典得到這些資訊。這樣做的好處是,以後查看錶結構比較方便,不需要從資料庫文檔資料中去尋找了,對於團隊開發來說,有應用的意義。

/*===============================================*/

/* 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也有這樣的語句,但是,大家往往發現選擇了資料庫模型是SQL Server,在自動產生建庫指令碼的時候,即使你選上了產生comment語句的選項,powerdesigner也不會幫你自動產生,是PowerDesigner不支援SQL Server麼,答案顯然是否定的。

問題的解決

PowerDesigner這個工具可以支援任何一種關係型資料庫的模型設計,因為,在PowerDesigner中每一種資料庫模型的特性定義都儲存在一個xdb檔案中,我們可以在[PowerDesigner_Install_Home]/Resource Files/DBMS下可以找到。當然,我們也可以自己建立一個新的xdb,定義好我們想支援的資料庫模型的特性。明白了這一點,這個問題的答案就顯而易見。

下面我就簡單地說明一下,我使用的是PowerDesinger9.5企業版。Sybase有些簡化版本(如SQL Moduler)就不能自訂xdb,請大家注意。

1 從菜單TOOLS->RESOUCES->DBMS,進入自訂資料模型,參見圖1。

圖1

2 PowerDesigner彈出一個對話方塊,列表框中列出了當前PowerDesigner支援的

資料庫模型(圖2)。我們選擇建立一個新的。輸入名字SQL SERVER 2000(EXTENDED),選擇從現有的SQL SERVER 2000複製,這樣SQL SERVER 2000(EXTENDED)就包含了原來SQL SERVER2000模型擁有的所有特徵(圖3)。

圖2

                       圖3

3 接下來,我們就需要為SQL Server 2000(Extended)添加支援自動產生表和列注釋代碼的特性。PowerDesinger把定義的特性用樹狀結構組織了起來(圖4),本篇要做的工作就是定義Script代碼特徵。我們需要修改Script\Objects\Table\TableComment和Script\Objects\Column\ColumnComment中的指令碼特徵代碼。

4 SQL Server 2000在資料庫中儲存表和列注釋是通過調用系統預存程序sp_addextendedproperty來做的。那麼我們只需要,分別寫上

表級的注釋代碼是:
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'dbo', N'table', N'%TABLE%', NULL, NULL
列級的注釋代碼是
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'dbo', N'table', N'%TABLE%', N'column', N'%COLUMN%'

大家看看這些代碼,立刻就明白是怎麼回事了(圖5)。%COMMENT%之類的就是相當於替換變數,PowerDesigner在產生指令碼的時候自動替換設計模型中替換變數的值。

圖4

圖5

5 儲存SQL Server 2000(Extended)成一個xdb檔案。

6 現在,我們可以建立一個新的Physical Data Model了,資料庫模型選SQL Server 2000(Extended)。建立一個表,需要提醒的是,一定要指定一個資料庫使用者,一般用dbo(圖6)。我們可以為表和列都添加上注釋。

圖6

7 產生建庫指令碼,菜單Databases->Generate Database。在圖7所示的對話方塊中,注意要選中comment選項。點擊確定,就得到最終的建庫指令碼。開啟看看,我們看到了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,自動增加', N'user', N'dbo', N'table', N'Employee', N'column', N'EmployeeID'

go

….

8 我們在SQL Server 2000中執行這個角本,然後通過Enterprise Manager可以看到這些注釋。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.