PowerDesigner.docx
《PowerDesigner.docx》由会员分享,可在线阅读,更多相关《PowerDesigner.docx(8页珍藏版)》请在冰豆网上搜索。
PowerDesigner
PowerDesigner
2008-06-2609:
58最近用powerDesinger遇到一些小问题,遇到好几次同样的问题了,写在这里,以备查用:
--------------------------------------------------------------------------------------------------
powerdesiner的自增长列,以前都是生成sql语句后,再在自增长列中添加Identity(1,1).找了好久,终于打到了方法.
1.如果dbms是MsSql,则选定表后,database->editcurrentdbms->出现DBMSproperties对话框,选择General页,左侧的树选择SQL2000->Profile->Column->ExtendedAttributes下面的ExtIdentityIncrement是步进值,ExtIdentitySeed是起始值,分别设定默认值,后返回。
2.在表的属性对话框里面,选择Clumns页,按Ctrl+U,在Idenitity前面打上钩。
如有必要,也可以将
ExtIdentityIncrement和ExtIdentitySeed也打上勾,这样在设定Idenitity时也可以直接指定起始值和步进值了。
btw:
我用的是PD11,刚刚开始学PD,关于Identity的设定也是找了好久。
3.对于qlserver,在表的属性对话框里面,选择Clumns页,按Alt+enter进入列的属性页面,在右下角勾选Idenitity属性即可.
在使用PowerDesigner的过程中,经常遇到一些设置上面的问题,每次都去找老鸟帮忙解决,隔一段时间不用,下一次又忘掉了,不好意思再去麻烦他们了,所以现在用博客园记录下来,以后上园子来找以前的东西.
1取消Name和Code关联的设置
在设计PDM文件的时候,设计一张表,在填写栏位的时候,如果我们输入Name,Code会跟着变化.这个完全是西方人的习惯,因为他们的Name和Code都是E文,所以不会出现什么问题.但是,我们使用的时候,就会很不习惯,Name应该是中文名字,Code才是资料库的实际字段名.
下面记录修改设置的步骤:
Step1:
菜单栏找到Tools,点开,找到GeneralOptions,点击Step2:
打开Dialog将Operatingmodes中的NameToCodemirroring 將前面的勾去掉OK!
完成
sql语句中表名与字段名前的引号去除:
打开cdm的情况下,进入Tools-ModelOptions-NamingConvention,把Name和Code的标签的Charctercase选项设置成Uppercase或者Lowercase,只要不是MixedCase就行!
或者选择Database->Editcurrentdatabase->Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determinesifthecasesensitivityforidentifiersismanagedusingdoublequotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!
或者在打开pdm的情况下,进入Tools-ModelOptions-NamingConvention,把Name和Code的标签的Charctercase选项设置成Uppercase就可以!
在修改name的时候,code的值将跟着变动,很不方便修改方法:
PowerDesign中的选项菜单里修改,在[Tool]-->[GeneralOptions]->[Dialog]->[Operatingmodes]->[NametoCodemirroring],这里默认是让名称和代码同步,将前面的复选框去掉就行了。
由pdm生成建表脚本时,字段超过15字符就发生错误(oracle)原因未知,解决办法是打开PDM后,会出现Database的菜单栏,进入Database-EditCurrentDBMS-script-objects-column-maxlen,把value值调大(原为30),比如改成60。
出现表或者其它对象的长度也有这种错误的话都可以选择对应的objects照此种方法更改!
或者使用下面的这种方法:
生成建表脚本时会弹出Databasegeneration提示框:
把options-checkmodel的小勾给去掉,就是不进行检查(不推荐)!
或者可以修改C:
\ProgramFiles\Sybase\PowerDesignerTrial11\ResourceFiles\DBMS\oracl9i2.xdb文件
修改好后,再cdm转为pdm时,选择“CopytheDBMSdefinitioninmodel”把把这个资源文件拷贝到模型中。
由CDM生成PDM时,自动生成的外键的重命名PDMGenerationOptions->Detail->FKindexnames默认是%REFR%_FK,改为FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!
另外自动生成的父字段的规则是PDMGenerationOptions->Detail->FKcolumnnametemplate中设置的,默认是%.3:
PARENT%_%COLUMN%,可以改为Par%COLUMN%表示是父字段!
建立一个表后,为何检测出现Existenceofindex的警告
Atableshouldcontainatleastonecolumn,oneindex,onekey,andonereference.
可以不检查Existenceofindex这项,也就没有这个警告错误了!
意思是说没有给表建立索引,而一个表一般至少要有一个索引,这是一个警告,不用管也没有关系!
如何防止一对一的关系生成两个引用(外键)
要定义关系的支配方向,占支配地位的实体(有D标志)变为父表。
在cdm中双击一对一关系->Detail->Dominantrole选择支配关系修改报表模板中一些术语的定义
即文件:
C:
\ProgramFiles\Sybase\PowerDesignerTrial11\ResourceFiles\ReportLanguages\Chinese.xrl
Tools-Resources-ReportLanguages-选择Chinese-单击Properties或双击目标
修改某些对象的名称:
ObjectAttributes\PhysicalDataModel\Column\
ForeignKey:
外键
Mandatory:
为空
Primary:
主键
Table:
表
用查找替换,把“表格”替换成“表”
修改显示的内容为别的:
ValuesMapping\Lists\Standard,添加TRUE的转化列为是,FALSE的转化列为空
另外Report-TitlePage里可以设置标题信息PowerDesigner11中批量根据对象的name生成comment的脚本‘******************************************************************************
‘*File:
name2comment.vbs
‘*Purpose:
Databasegenerationcannotuseobjectnamesanymore
‘inversion7andabove.
‘Italwaysusestheobjectcodes.
‘
‘Incasetheobjectcodesarenotalignedwithyour
‘objectnamesinyourmodel,thisscriptwillcopy
‘theobjectNameontotheobjectcommentfor
‘theTablesandColumns.
‘
‘*Title:
把对象name拷入comment属性中
‘*Version:
1.0
‘*Author:
‘*执行方法:
PD11--OpenPDM--Tools--ExecuteCommands--RunScript
‘******************************************************************************OptionExplicit
ValidationMode=True
InteractiveMode=im_BatchDimmdl‘thecurrentmodel‘getthecurrentactivemodel
Setmdl=ActiveModel
If(mdlIsNothing)Then
MsgBox"ThereisnocurrentModel"
ElseIfNotmdl.IsKindOf(PdPDM.cls_Model)Then
MsgBox"ThecurrentmodelisnotanPhysicalDatamodel."
Else
ProcessFoldermdl
EndIf‘Thisroutinecopynameintocodeforeachtable,eachcolumnandeachview
‘ofthecurrentfolder
PrivatesubProcessFolder(folder)
DimTab‘runningtable
foreachTabinfolder.tables
ifnottab.isShortcutthen
ment=tab.name
Dimcol‘runningcolumn
foreachcolintab.columns
ment=col.name
next
endif
nextDimview‘runningview
foreachviewinfolder.Views
ifnotview.isShortcutthen
ment=view.name
endif
next‘gointothesub-packages
Dimf‘runningfolder
ForEachfInfolder.Packages
ifnotf.IsShortcutthen
ProcessFolderf
endif
Next
endsubPowerDesigner生成SQL的Existenceofrefernce错误问题
现象:
用PowerDesigner生成SQL语句时,提示Existenceofrefernce错误。
原因:
该表没有与其他表的关联(如外键等),而PowerDesigner需要存在一个refernce才能生成SQL.
解决方法:
在工具栏空白处右键打开Palette面板,选中Link/ExtendedDependency按钮,然后在提示出错的表上添加到自己的Dependency。
重新生成SQL,你将发现刚才提示的错误没有了,问题解决。
利用PowerDesigner批量生成测试数据
主要解决方法:
A:
在PowerDesigner建表
B:
然后给每一个表的字段建立相应的摘要文件
步骤如下:
Model->TestDataProfiles配置每一个字段摘要文件General:
输入Name、Code、
选择Class(数字、字符、时间)类型
选择GenerationSource:
Automatic、List、ODBC、FileDetail:
配置字段相关信息
所有字段摘要文件配置完成后双击该表->选择字段->Detail->选择TestDataParameters摘要文件如果字段值与其它字段有关系在:
ComputedExpression中输入计算列--生成测试数据:
DataBase->GenerationTestData->
选择:
Genration类型(Sript、ODBC)
Selection(选择要生成的表)
TestDataGenration(Defaultnumberofrows生成记录行数)
1.使用PD12时出现以下错误:
Referenceconstraintnamemaximum
lengthislimitedto30characters
Keyconstraintnamemaximumlength
islimitedto30characters
Tablecodemaximumlength
Columncodemaximumlength
……
导致生成建表SQL时通不过,细究原因原来是默认设置的问题,改下就可以了。
调整以下参数:
Database=>EditcurrentDBMS数据库类型:
:
Script\Objects\MaxConstLenvalue=>255
Database=>EditcurrentDBMS数据库类型:
:
Script\Objects\Table\Maxlenvalue=>255
Database=>EditcurrentDBMS数据库类型:
:
Script\Objects\Column\Maxlenvalue=>255
但是要注意的是,表名、列名、主键等不要超过30个字符,否则Oracle不认。
2.附:
生成数据库脚本
Database=>Generatedatabase
-----------------------------
-----------------------------
默认生成的SQL语句(表名、字段名等)都带双引号,导致用SQLPlus插入Oracle数据库时表名与表列都带""号,要解决这个问题,在数据库中做如下设置:
Database->EditCurrentDBMS...->Script->Sql->
Format->CaseSensitivityUsingQuote改为No
3.如何在powerDesigner中给字段赋默认值
双击表,出现column列表,双击要设置的列的左边的灰色框,应该会弹出新的窗口,然后在新窗口上选择standardchecks,里面有default的