PowerDesigner使用技巧

 转个文章,里面提到的技巧很好用.感谢原创作者

转帖来源:http://www.blogjava.net/livery/articles/220324.html?opt=admin

 

 

1、pd中复制一列是,实际上是一个链接。源列的变动同时体现在复制列上
2、数据库设计通常步骤:CDM缺定主要结构--》生成PDM--》在PDM上修改,必要时生成CDM

     若由pdm生成cdm再生成pdm,在pdm中修改过的外键名将被改回到默认值
3、必要时可以通过修改模板(Database-Edit Current DataBase)改变脚本的格式。
     例如:
           Script-Objects-Column-Add的Value中开头增加一行“--%COLNNAME%”以便在脚本中显示列的中英文对照
4、去掉讨厌的name、code映射:Tools-General Options-clear the Name to Code mirroring check box
5、对于大小写不敏感的数据库(如Oracle),PowerDesign在创建脚本时自动给表名和字段名加上双引号,以“强字符串”形式来获 取区分大小写,这样给sql语句的编写制造很多麻烦。
     去掉这个添足的功能:

      Database -〉Edit Current DBMS -〉Script -〉Sql -〉Format -〉CaseSensitivityUsingQuote右边面板参数值 Value 选择No

6、由cdm生成pdm,可以控制是否将关系生成引用;由pdm生成脚本,可以控制是否将引用生成外键

7、对于oracle而言,为表设置选项(如tablespace GPSSYSTEM)可使其创建到正确的表空间;为主键设置选项(using index tablespace GPSINDEX)使索引创建到正确的表空间中

8、使数据模型图上显示中文:Tools-Model Options-Naming Convertion,在右侧Display处选择Name

9、建立一个表后,为何检测出现Existence of index的警告
      A table should contain at least one column, one index, one key, and one reference.
      可以不检查 Existence of index 这项,也就没有这个警告错误了!
      意思是说没有给表建立索引,而一个表一般至少要有一个索引,这是一个警告,不用管也没有关系!

10、创建一个表在修改字段的时候,一修改name的内容,code也跟着变化,如何让code不随着name变化
Name和Code 的右侧都有一个按钮“=”,如果需要不同步的话,把这个按钮弹起来就可以了。
Tools->General Options->Dialog->Name to Code Mirroring (去掉)

11、由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”把把这个资源文件拷贝到模型中。

12、由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%表示是父字段!

13、如何防止一对一的关系生成两个引用(外键)
要定义关系的支配方向,占支配地位的实体(有D标志)变为父表。
在cdm中双击一对一关系->Detail->Dominant role选择支配关系

14、修改报表模板中一些术语的定义
即文件: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里可以设置标题信息

15、

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

16、PowerDesigner 生成SQL的Existence of refernce错误问题
现象:用PowerDesigner生成SQL语句时,提示Existence of refernce错误。
原因:该表没有与其他表的关联(如外键等),而PowerDesigner需要存在一个refernce才能生成SQL.
解决方法:
    在工具栏空白处右键打开Palette面板,选中Link/Extended Dependency 按钮,然后在提示出错的表上添加到自己的Dependency。
    重新生成SQL,你将发现刚才提示的错误没有了,问题解决。

17、利用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 生成记录行数)

 

 

 

 

 

powerdesigner高级VBS应用
一、编写相关的VBS脚本
    可以在PowerDesign里自定义一些命令与操作,具体的内容可以参考[powerdesigner安装目录下的]/VB Scripts目录下的脚本示例。
    怎么运用这些脚本呢?
    在Tools-》Execute Commands里可以进行操作,具体说明见帮助。
    帮助的位置在 
     PowerDesigner General Features Guide
       -> Working with Scripts           
          ->Accessing objects using VBScript
              ->VBScript uses in PowerDesigner
二、PowerDesign的高级使用主要是DBMS的配置

1、修改建表脚本生成规则。如果每个表格都有相同的字段,可以如下修改:
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值注释。

2、修改字段生成规则。要给每个字段都添加一个注释的话,同一窗口中展开 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值(可以是中文)

3、修改外键命名规则。选择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_%.U7:PARENT%,

可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1
掌握这种方法后就可以按照自己的想法修改了

生成建库脚本SQL文件中的表头注释很讨厌,可以在 Databse -> Generate Database (Ctrl+G)窗口中,选择Options卡片,去掉Usage的Title钩选项即可。

4、添加外键
Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段

5、去掉生成的SQL脚本双引号的问题:ORACLE 8I2::Script/Sql/Format/CaseSensitivityUsingQuote改成No,默认是Yes所以会有双引号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值