PowerDesigner常用技巧


  PowerDesigner是非常強大的數據庫設計軟件,熟練使用PowerDesigner可以使數據庫設計高效而簡潔。PowerDesign具體操作在幫助文檔(按F1)里面有詳細描述,這兒只是列出了常用的操作。PowerDesigner16.5破解漢化包: https://download.csdn.net/download/z645817/11221804

  1.如果想詳細了解編寫VBS腳本在PowerDesign里自定義的一些命令與操作,具體的可以參考 $PWD\PowerDesigner 9\VB Scripts 目錄下的腳本示例。
運行VB腳本在 Tools->Execute Commands 里可以進行操作。操作說明在幫助文檔里寫的很清楚 F1,幫助文檔的位置在 Customizing and Extending PowerDesigner > Scripting PowerDesigner > Running Scripts in PowerDesign.

配置統一生成規則

  2、修改建表腳本生成規則。如果每個表格都有相同的字段,可以如下修改:

  Database -> Edit Current DBMS 展開 Script -> Object -> Table -> Create 見右下的Value值,可以直接修改如下:

/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
ts char(19) null default convert(char(19),getdate(),20),
dr smallint null default 0
)
[%OPTIONS%]

  其中的 ts、dr 兩列會在生成SQL腳本的時候自動的插入每個表格中,其中的%TNAME% 變量是給每個表格的SQL添加一個該表的Name值注釋。

  3、修改字段生成規則。要給每個字段都添加一個注釋的話,Database -> Edit Current DBMS 中展開 Script -> Object -> Column -> Add 的 Value修改為:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/

  其中的%COLNNAME%就是列的Name值(可以是中文)。

  4、修改外鍵命名規則。選擇Database —> Edit Current DBMS 選擇Scripts -> Objects -> Reference -> ConstName
  可以發現右側的Value為:

FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%

  該命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,可以根據這種模式自定義為:

FK_%.U7:CHILD%_RELATIONS_%.U8:PARENT%

  可以使FK名稱變為FK_TABLE_1_RELATIONS_PARENT_1 掌握這種方法后就可以按照自己的想法修改。

  5、生成建庫腳本SQL文件中的表頭注釋很討厭,可以在 Databse -> Generate Database (Ctrl+G)窗口中,選擇Format卡片,去掉Script conventions的 Title 鈎選項即可。

  6、添加外鍵:Model -> References新建一條外鍵后,雙擊進入外鍵屬性,在“Joins”卡片中可以選擇子表的外鍵字段。

  7、在生成代碼時不包含drop語句
  在菜單Database->Generate Database,選擇彈出的窗口中的Options標簽頁,去掉窗口右邊里面的所有Drop選項即可。

  8.在生成代碼中字段默認值不需要帶單引號',如default 'to_char(sysdate,'yyyymmdd')'要改成default to_char(sysdate,'yyyymmdd')
  在菜單Database->Edit Current DBMS... ,選擇General標簽頁,在窗口左邊選擇Script->Quote,然后把窗口右邊的Value后面的單引號去掉。

  9.去掉生成的建表腳本中對象的雙引號

  打開PD選擇Tools-Model Options-Naming Convention,把右邊Name和Code的標簽的Charcter case選項設置成Uppercase或者Lowercase,只要不是Mixed Case就行。

  10、創建一個表在修改字段的時候,修改name的內容,code也跟着變化,如何讓code不隨着name變化

  Name和Code 的右側都有一個按鈕“=”,如果需要不同步的話,把這個按鈕彈起來就可以了,同步直接點擊"="。
  修改方法:PowerDesign中的選項菜單里修改,在Tool -> General Options->Dialog->Operating modes->Name to Code mirroring,這里默認是讓名稱和代碼同步,去勾選復選框。

  11、mysql版本無法生成視圖的問題
  打開使用MySQL5.0的PDM之后,在菜單里選擇Database->Edit Current DBMS..->確認DBMS使用的是MySQL5.0
  打開左端樹狀結構Script->Objects->View -> Create,在右端的Value中寫入

create VIEW [%R%?[ if not exists]] %VIEW%
as
%SQL%

  選中Drop,在右端的Value中寫入

drop table if exists %VIEW%

  選中Enable,在右端的Value中選擇Yes,確定保存。

  注意,此修改只是修改了PowerDesigner程序的設置,只需要配置一次即可;但是它不對PDM文件做改動,沒有修改過的PowerDesigner不能生成視圖的SQL。

  12、建立一個表后,為何檢測出現Existence of index的警告

  A table should contain at least one column, one index, one key, and one reference.
  可以不檢查 Existence of index 這項,這條警告不影響建表。警告意思是說沒有給表建立索引,而一個表一般至少要有一列、一個索引、一個主鍵。

  13、PDM生成建表腳本時,字段超過15字符就發生錯誤
  解決辦法是打開PDM后,會出現Database的菜單欄,進入Database -> Edit Current DBMS ->script->objects->column->maxlen,把value值調大(原為30),比如改成60。出現表或者其它對象的長度也有這種錯誤的話都可以選擇對應的  objects照此種方法更改,或者使用下面的這種方法:

  ●生成建表腳本時會彈出Database generation提示框:把options - check model的小勾給去掉,就是不進行檢查(不推薦)

  14、如何防止一對一的關系生成兩個引用(外鍵)
  要定義關系的支配方向,占支配地位的實體(有D標志)變為父表。在cdm中雙擊一對一關系->Detail->Dominant role選擇支配關系

  15、修改mysql表的類型,如由默認的myisam改成innodb

  修改單個表的就在表的屬性窗口中,選擇Physcial Options標簽頁,雙擊窗口右邊的窗口左邊的type=(ISAM),然后在窗口右邊下部選擇sql,再修改成type=(innodb)
  如果修改數據庫的類型為innodb類型,打開模型的屬性窗口,選擇MySQL標簽頁,在Database type后的編輯框中錄入InnoDB即可。再選擇菜單database->default physical option,然后在彈出的窗口中左邊雙擊選擇type=[ISAM],在窗口右邊就出現type=[ISAM],用鼠標點中它,在窗口的下面type后選擇innodb,最后點“Apply to...”按鈕,選擇所有的表即可。

  16、從模型直接生成MSSQL數據庫表的時候沒有附帶上注釋
  PowerDesigner這個工具可以支持任何一種關系型數據庫的模型設計,因為在PowerDesigner中每一種數據庫模型的特性定義都存儲在一個xdb文件中,我們可以在[PowerDesigner_Install_Home]/Resource Files/DBMS下可以找到。當然我們也可以自己創建一個新的xdb,定義好我們想支持的數據庫模型的特性。

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

  ●從菜單TOOLS->RESOUCES->DBMS,進入自定義數據模型
  ●PowerDesigner彈出一個對話框,列表框中列出了當前PowerDesigner支持的數據庫模型。選擇創建一個新的。輸入名字SQL SERVER 2010(EXTENDED),選擇從現有的SQL SERVER 2010復制,這樣SQL SERVER 2010(EXTENDED)就包含了原來SQL SERVER2010模型擁有的所有特征。
  ●接下來,我們就需要為SQL Server 2010(Extended)添加支持自動生成表和列注釋代碼的特性。PowerDesinger把定義的特性用樹狀結構組織了起來,本篇要做的工作就是定義Script代碼特征。我們需要修改Script\Objects\Table\TableComment和Script\Objects\Column\ColumnComment中的腳本特征代碼。
  ●SQL Server 2010在數據庫中保存表和列注釋是通過調用系統存儲過程sp_addextendedproperty來做的。那么我們只需要,分別寫上
  表級的注釋代碼是:

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%' 

  %COMMENT%之類的就是相當於替換變量,PowerDesigner在生成腳本的時候自動替換設計模型中替換變量的值。

  ●保存SQL Server 2010(Extended)成一個xdb文件。
  ●現在,可以創建一個新的Physical Data Model了,數據庫模型選SQL Server 2010(Extended)。建立一個表,需要注意的是,一定要指定一個數據庫使用者,一般用dbo。我們可以為表和列都添加上注釋。
  ●生成建庫腳本,菜單Databases->Generate Database。注意要選中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

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

  17、把NAME 列在 scrip里顯示出來
  修改字段生成規則。要給每個字段都添加一個注釋的話,同一窗口中展開 Script -> Object -> Column -> Add 的 Value修改為:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/

  其中的%COLNNAME%就是列的Name值(可以是中文)

  18、Identity
  PDM里查看表的屬性,Columns選項卡,選中整列,查看列屬性,點左上方的properties圖標(有手形圖案的那個),此時打開一個設置窗口,General選項卡里面進行設置,在列屬性的General標簽頁里有個Identity復選框,勾上就行。

  19、為sql生成注釋,操作如下,用的是PowerDesigner16.5,在其中選擇Tools -> Excute commands->Edit/Run Script打開的窗口中添加以下信息,執行run

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch

Dim mdl ' the current model

' get the current active model 
Set mdl = ActiveModel 
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl 
End If

' This routine copy name into comment for each table, each column and each view 
' of the current folder 
Private sub ProcessFolder(folder) 
Dim Tab 'running table 
for each Tab in folder.tables 
if not tab.isShortcut then
'把表明作為表注釋,其實不用這么做
tab.comment = tab.name 
Dim col ' running column 
for each col in tab.columns 
'把列name和comment合並為comment
col.comment= col.name 
next
end if
next

Dim view 'running view 
for each view in folder.Views 
if not view.isShortcut then
view.comment = view.name 
end if
next

' go into the sub-packages 
Dim f ' running folder 
For Each f In folder.Packages 
if not f.IsShortcut then
ProcessFolder f 
end if
Next
end sub    

  20、更換數據庫sql語句

  選擇Database->change current DBMS,在DBMS中選擇對應的數據庫,如MySQL,點擊確定后,然后選擇Database---》Generate Database選項,在彈出的窗口中選擇生成sql文件的保存路徑,點擊確定,則可看到生成的sql語言完全是按照MySQL的標准。

  21、新建概念模型(conceptual Data Model)
  File-->New Model-->Conceptual Data Mode 或者點擊工作區,右鍵-->New Model-->Conceptual Data Mode

  22、打開模型時,會有方格線,去除方格線:Tools->Dispaly Preferences->Diagram 去勾選Show page delimiter。

  23、生成帶注釋的sql,Database-->Generate DataBase... 進入彈出框。
  在Options頁簽可以選擇要生存腳本的內容(Generate name in enpty comment),可以選擇是否創建數據庫的腳本,選擇要生成腳本的表,文件編碼方式
  在selection中選擇你需要生成sql的模塊,指定輸出目錄等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM