天天看點

powerDesigner 技巧

  powerdesiner的自增長列,以前都是生成sql語句後,再在自增長列中添加Identity(1,1).找了好久,終于打到了方法 .

1.        如果dbms是MsSql,則標明表後,database-> edit current dbms-> 出現DBMS properties對話框,選擇General頁,左側的樹選擇SQL 2000-> Profile-> Column-> Extended Attributes 下面的ExtIdentityIncrement是步進值,ExtIdentitySeed是起始值,分别設定預設值,後傳回。 

2.      在表的屬性對話框裡面,選擇Clumns頁,按Ctrl+U,在Idenitity前面打上鈎。如有必要,也可以将 

ExtIdentityIncrement和ExtIdentitySeed也打上勾,這樣在設定Idenitity時也可以直接指定起始值和步進值了。 

btw:我用的是PD11,剛剛開始學PD,關于Identity的設定也是找了好久。

3.     對于ql server ,在表的屬性對話框裡面,選擇Clumns頁,按Alt+enter進入列的屬性頁面,在右下角勾選Idenitity屬性即可.

  取消Name和Code關聯的設定 

     在設計PDM檔案的時候,設計一張表,在填寫欄位的時候,如果我們輸入Name,Code會跟着變化.這個完全是西方人的習慣,因為他們的Name和 Code都是E文,是以不會出現什麼問題.但是,我們使用的時候,就會很不習慣,Name應該是中文名字,Code才是資料庫的實際字段名.

     下面記錄修改設定的步驟:

         Step 1:

             菜單欄找到Tools,點開,找到General Options,點選 

Step 2:打開Dialog将Operating modes中的 Name To Code mirroring 將前面的勾去掉

OK!完成

sql語句中表名與字段名前的引号去除:

打開cdm的情況下,進入Tools-Model Options-Naming Convention,把Name和Code的标簽的Charcter case選項設定成Uppercase或者Lowercase,隻要不是Mixed Case就行!

或者選擇Database->Edit current database->Script->Sql->Format,有一項CaseSensitivityUsingQuote,它的 comment為“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用雙引号來規定辨別符的大小寫,可以看到右邊的values預設值為“YES”,改為“No”即可!

或者在打開pdm的情況下,進入Tools-Model Options-Naming Convention,把Name和Code的标簽的Charcter case選項設定成Uppercase就可以!

在修改name的時候,code的值将跟着變動,很不友善

修改方法:PowerDesign中的選項菜單裡修改,在[Tool]-->[General Options]->[Dialog]->[Operating modes]->[Name to Code mirroring],這裡預設是讓名稱和代碼同步,将前面的複選框去掉就行了。

由pdm生成建表腳本時,字段超過15字元就發生錯誤(oracle)

原因未知,解決辦法是打開PDM後,會出現Database的菜單欄,進入Database - Edit Current DBMS -script-objects-column-maxlen,把value值調大(原為30),比如改成60。出現表或者其它對象的長度也有這種錯誤的話都可以選擇對應的objects照此種方法更改!

或者使用下面的這種方法:

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

    或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb檔案

     修改好後,再cdm轉為pdm時,選擇“Copy the DBMS definition in model”把把這個資源檔案拷貝到模型中。

由CDM生成PDM時,自動生成的外鍵的重命名

PDM Generation Options->Detail->FK index names預設是%REFR%_FK,改為FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!另外自動生成的父字段的規則是PDM Generation Options->Detail->FK column name template中設定的,預設是%.3:PARENT%_%COLUMN%,可以改為Par%COLUMN%表示是父字段!

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

    A table should contain at least one column, one index, one key, and one reference.

可以不檢查 Existence of index 這項,也就沒有這個警告錯誤了!

意思是說沒有給表建立索引,而一個表一般至少要有一個索引,這是一個警告,不用管也沒有關系!

如何防止一對一的關系生成兩個引用(外鍵) 

要定義關系的支配方向,占支配地位的實體(有D标志)變為父表。

在cdm中輕按兩下一對一關系->Detail->Dominant role選擇支配關系

修改報表模闆中一些術語的定義 

即檔案:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl

Tools-Resources-Report Languages-選擇Chinese-單擊Properties或輕按兩下目标

修改某些對象的名稱:Object Attributes\Physical Data Model\Column\

        ForeignKey:外鍵

        Mandatory:為空

        Primary:主鍵

        Table:表

用查找替換,把“表格”替換成“表” 

修改顯示的内容為别的:Values Mapping\Lists\Standard,添加TRUE的轉化列為是,FALSE的轉化列為空

另外Report-Title Page裡可以設定标題資訊

PowerDesigner11中批量根據對象的name生成comment的腳本

'******************************************************************************

'* File:     name2comment.vbs

'* Purpose: Database generation cannot use object names anymore

'            in version 7 and above.

'            It always uses the object codes.

'

'            In case the object codes are not aligned with your

'            object names in your model, this script will copy

'            the object Name onto the object comment for

'            the Tables and Columns.

'* Title:    把對象name拷入comment屬性中

'* Version: 1.0

'* Author:

'* 執行方法:PD11 -- Open PDM -- Tools -- Execute Commands -- Run Script

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 code 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

            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

   ' go into the sub-packages

   Dim f ' running folder

   For Each f In folder.Packages

      if not f.IsShortcut then

         ProcessFolder f

   Next

end sub

PowerDesigner 生成SQL的Existence of refernce錯誤問題 

現象:用PowerDesigner生成SQL語句時,提示Existence of refernce錯誤。

原因:該表沒有與其他表的關聯(如外鍵等),而PowerDesigner需要存在一個refernce才能生成SQL.

解決方法:

    在工具欄空白處右鍵打開Palette面闆,選中Link/Extended Dependency 按鈕,然後在提示出錯的表上添加到自己的Dependency。

    重新生成SQL,你将發現剛才提示的錯誤沒有了,問題解決。

利用PowerDesigner批量生成測試資料 

主要解決方法:

A:在PowerDesigner 建表

B:然後給每一個表的字段建立相應的摘要檔案

步驟如下:

Model->Test Data Profiles配置每一個字段摘要檔案General:輸入Name、Code、

選擇Class(數字、字元、時間)類型

選擇Generation Source: Automatic、List、ODBC、File Detail:配置字段相關資訊

所有字段摘要檔案配置完成後輕按兩下該表->選擇字段->Detail->選擇Test Data Parameters 摘要檔案如果字段值與其它字段有關系在: Computed Expression 中輸入計算列--生成測試資料:

DataBase->Generation Test Data->

選擇:Genration 類型(Sript、ODBC)

     Selection(選擇要生成的表)

     Test Data Genration(Default number of rows 生成記錄行數)

1.使用PD12時出現以下錯誤:

Reference constraint name maximum

length is limited to 30 characters

Key constraint name maximum length

is limited to 30 characters

Table code maximum length

Column code maximum length

……

導緻生成建表SQL時通不過,細究原因原來是預設設定的問題,改下就可以了。

調整以下參數:

Database=>Edit current DBMS 資料庫類型::Script\Objects\MaxConstLen value=>255

Database=>Edit current DBMS 資料庫類型::Script\Objects\Table\Maxlen value=>255

Database=>Edit current DBMS 資料庫類型::Script\Objects\Column\Maxlen value=>255

但是要注意的是,表名、列名、主鍵等不要超過30個字元,否則Oracle不認。

2.附:生成資料庫腳本

Database=>Generate database

-----------------------------

預設生成的SQL語句(表名、字段名等)都帶雙引号,導緻用SQLPlus插入Oracle資料庫時表名與表列都帶""号,要解決這個問題,在資料庫中做如下設定:

Database-> Edit Current DBMS...-> Script-> Sql->

Format-> CaseSensitivityUsingQuote 改為No

3.如何在powerDesigner中給字段賦預設值

輕按兩下表,出現column清單,輕按兩下要設定的列的左邊的灰色框,應該會彈出新的視窗,然後在新視窗上選擇standard checks ,裡面有default的

        我一直用的是Oracle資料庫,是以在設計CDM的時候,就沒有標明表主鍵自動增長。這是SQL Server和MYSQL才有的方式。Oracle中一般是采用SEQUENCE的方式來處理主鍵增長的問題的。相對寫程式來說,Oracle的處理方式比較複雜一點。

       打開PDM,選中一張表,輕按兩下打開表屬性,選擇Columns列,選中主鍵字段,輕按兩下打開,界面的最下方右下角有一個Identity,選中這個之後,生成的表主鍵就是自動增長的了。

要一個表一個表的手工去修改。這要改到什麼時候啊!

在google上搜尋了一下,發現居然有很多人碰到這個問題,還有一個vbs的腳本執行一次就解決了。大家可以去搜尋一下,腳本名字叫SetIdentity.vbs。

        在PD中執行腳本方法也很簡單,Tools——Excecute Commands——Edit/Run Scripts。

另外還有一個腳本,是用來把字段的name統一設定為資料庫字段的comments字段内容的name2comment.vbs代碼。也很好用。(一般name都是中文描述,code就是代碼)

本文轉自茄子_2008部落格園部落格,原文連結:http://www.cnblogs.com/xd502djj/archive/2011/01/18/1937976.html,如需轉載請自行聯系原作者。