首页 > 其他分享 >PowerDesigner 技巧

PowerDesigner 技巧

时间:2023-03-07 09:45:53浏览次数:42  
标签:DBMS name Database PowerDesigner 生成 current Name 技巧

2015-12-08 10:35:24

自增长列

  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就可以!

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

生成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就是代码)

去掉生成脚本中的 collate

1.点击:工具栏-》database-》edit current DBMS

2.选择数据源(以SqlServer2005为例)

Microsoft SQLServer2005\Script\Objects\Column\Add

在位置3修改代码:修改的内容就是去掉: .Z:[ collate %ExtCollation%]

标签:DBMS,name,Database,PowerDesigner,生成,current,Name,技巧
From: https://www.cnblogs.com/adwyz/p/17059960.html

相关文章

  • linux下vim的使用以及高效率的技巧
    今天来介绍以下linux下vim的使用以及高效率的技巧目录一.关于vim编辑器二.vim编辑器的模式三.一般模式下的基础操作四.V模式(列模式)的基础操作五.命令模式下......
  • 如何将抽象算法写成代码?(小技巧)
    画出算法的演示图,展现算法对某个实例详细的执行过程,可以很清晰地把算法写下来。注意以下的几点:实例的规模应该尽可能小,便于人工分析算法的执行过程;实例应该尽可能包含......
  • linux下vim的使用以及高效率的技巧
    介绍以下linux下vim的使用以及高效率的技巧目录一.关于vim编辑器二.vim编辑器的模式三.一般模式下的基础操作四.V模式(列模式)的基础操作五.命令模式下的基础操作六.......
  • 169_技巧_Power BI 依据促销日历计算销售金额
    169_技巧_PowerBI依据促销日历计算销售金额一、背景在各位表格表姐们计算销售金额的时候,有一个绕不开的问题:商品有促销的问题,需要使用对应的促销价来计算销售额。按照......
  • 保持长尾词排名的技巧,怎么查找合适的长尾词?
    ​正如我们前面所说的,长期来看,长尾关键词绝对值得你花费时间来经营。值得庆幸的是,使用关键词挖掘工具来识别它们是很容易的。然后,你可以使用iis7长尾词挖掘器来挖掘检......
  • 独家揭秘:站外引流的十大技巧!
    在今天的互联网时代,如何有效地引流已成为网站运营者面临的一个重要问题。站外引流是指通过在其他网站或平台上建立链接或发布内容,将流量引导到自己的网站,提高自己网站的访问......
  • Linux 终端中使用 nano 编辑器技巧
    导读最初在 Linux 终端中使用nano编辑器的时候,或多或少可能会遇到一些问题。使用它编辑内容应该没什么,一切都很简单,但是在编辑完成后,怎样保存内容呢?常规的ctrl+......
  • C++编译小技巧
    1.单文件//math.cppintmultiply(inta,intb){returna*b;}//main.cpp#include<iostream>intmain(){ std::cout<<"Hello,world!"<<std::endl; s......
  • 原生技巧篇
    nameletmsy='a';msy.name='xxx'console.log(msy);//undefined非严格模式返回undefined,严格模式报错==10==[[[10]]]+[[[10]]]//不管多少层,都是转成10解构......
  • node.js学习技巧
    --save===生产环境dependenciednpminstallxxxnpminstallxxx--savenpminstallxxx-Snpmixxx-S===开发环境devDependencies在devDependencies添加包......