﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-j2ee绿洲-文章分类-powerdisigner</title><link>http://www.blogjava.net/livery/category/33549.html</link><description>找到属于自己的一片天空</description><language>zh-cn</language><lastBuildDate>Wed, 06 Aug 2008 05:52:18 GMT</lastBuildDate><pubDate>Wed, 06 Aug 2008 05:52:18 GMT</pubDate><ttl>60</ttl><item><title>powerdesigner高级VBS应用</title><link>http://www.blogjava.net/livery/articles/220332.html</link><dc:creator>心情经纬</dc:creator><author>心情经纬</author><pubDate>Wed, 06 Aug 2008 01:04:00 GMT</pubDate><guid>http://www.blogjava.net/livery/articles/220332.html</guid><wfw:comment>http://www.blogjava.net/livery/comments/220332.html</wfw:comment><comments>http://www.blogjava.net/livery/articles/220332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/livery/comments/commentRss/220332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/livery/services/trackbacks/220332.html</trackback:ping><description><![CDATA[<span style="font-family: Arial;"><span style="font-size: 10pt;">一、编写相关的VBS脚本<br />
&nbsp;&nbsp;&nbsp; 可以在PowerDesign里自定义一些命令与操作，具体的内容可以参考[powerdesigner安装目录下的]\VB Scripts目录下的脚本示例。<br />
&nbsp;&nbsp;&nbsp; 怎么运用这些脚本呢？<br />
&nbsp;&nbsp;&nbsp; 在Tools－》Execute Commands里可以进行操作，具体说明见帮助。<br />
&nbsp;&nbsp;&nbsp; 帮助的位置在&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; PowerDesigner General Features Guide<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; Working with Scripts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;Accessing objects using VBScript<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;VBScript uses in PowerDesigner<br />
二、PowerDesign的高级使用主要是DBMS的配置<br />
<p>1、修改建表脚本生成规则。如果每个表格都有相同的字段，可以如下修改：<br />
Database -&gt; Edit Current DBMS 展开 Script -&gt; Object -&gt; Table -&gt; Create 见右下的Value值，可以直接修改如下：</p>
<p>/* tablename: %TNAME% */<br />
create table [%QUALIFIER%]%TABLE% (<br />
&nbsp;&nbsp; %TABLDEFN%<br />
&nbsp;&nbsp; ts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char(19)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null default convert(char(19),getdate(),20),<br />
&nbsp;&nbsp; dr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null default 0<br />
)<br />
[%OPTIONS%]</p>
<p>其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中，其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释。</p>
<p>2、修改字段生成规则。要给每个字段都添加一个注释的话，同一窗口中展开 Script -&gt; Object -&gt; Column -&gt; Add 的 Value修改为：</p>
<p>%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]<br />
&nbsp;&nbsp;&nbsp;&nbsp; [[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/</p>
<p>其中的%COLNNAME%就是列的Name值（可以是中文）</p>
<p>3、修改外键命名规则。选择Database—&gt;Edit Current DBMS<br />
选择Scripts－》Objects－》Reference－》ConstName<br />
可以发现右侧的Value为：</p>
<p>FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%</p>
<p>可见，该命名方法是：'FK_'+8位子表名+9位Reference名+8位父表名，你可以根据这中模式自定义为：</p>
<p>FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%，</p>
<p>可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1<br />
掌握这种方法后就可以按照自己的想法修改了</p>
<p>生成建库脚本SQL文件中的表头注释很讨厌，可以在 Databse -&gt; Generate Database (Ctrl+G)窗口中，选择Options卡片，去掉Usage的Title钩选项即可。</p>
<p>4、添加外键<br />
Model -&gt; References新建一条外键后，双击进入外键属性，在&#8220;Joins&#8221;卡片中可以选择子表的外键字段<br />
<br />
5、去掉生成的SQL脚本双引号的问题：ORACLE 8I2::Script\Sql\Format\CaseSensitivityUsingQuote改成No，默认是Yes所以会有双引号。</p>
<br />
<br />
<br />
</span></span>
<img src ="http://www.blogjava.net/livery/aggbug/220332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/livery/" target="_blank">心情经纬</a> 2008-08-06 09:04 <a href="http://www.blogjava.net/livery/articles/220332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PowerDesigner使用技巧之一</title><link>http://www.blogjava.net/livery/articles/220324.html</link><dc:creator>心情经纬</dc:creator><author>心情经纬</author><pubDate>Wed, 06 Aug 2008 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/livery/articles/220324.html</guid><wfw:comment>http://www.blogjava.net/livery/comments/220324.html</wfw:comment><comments>http://www.blogjava.net/livery/articles/220324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/livery/comments/commentRss/220324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/livery/services/trackbacks/220324.html</trackback:ping><description><![CDATA[<span style="font-family: Arial;"><span style="font-size: 10pt;"><font size="2"><span style="font-size: 10pt;"><span style="font-family: Arial;"><font size="2"><br />
使用经验：<br />
1、pd中复制一列是，实际上是一个链接。源列的变动同时体现在复制列上<br />
</font><font size="2"><span style="color: #ff0000;">2、</span><span style="color: #ff0000;"><span style="color: #ff0000;"><font size="2">数据库设计通常步骤：CDM缺定主要结构－－》生成PDM－－》在PDM上修改，必要时生成CDM</font></span></span></font><br />
&nbsp;&nbsp;&nbsp;&nbsp; <font size="2">若由pdm生成cdm再生成pdm，在pdm中修改过的外键名将被改回到默认值</font><br />
3、<font size="2">必要时可以通过修改模板（Database－Edit Current
DataBase）改变脚本的格式。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 例如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Script－Objects－Column－Add的Value中开头增加一行&#8220;--%COLNNAME%&#8221;以便在脚本中显示列的中英文对照<br />
<span style="font-size: 10pt;"><span style="font-family: Arial;"><font size="2"><span style="font-size: 10pt;"><span style="font-family: Arial;"><font size="2">4、</font></span></span></font><font size="2">去掉讨厌的name、code映射：Tools－General Options－clear the Name to Code mirroring check
box<br />
5、</font>对于大小写不敏感的数据库（如Oracle），PowerDesign在创建脚本时自动给表名和字段名加上双引号，以&#8220;强字符串&#8221;形式来获 取区分大小写，这样给sql语句的编写制造很多麻烦。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 去掉这个添足的功能：<br />
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database
-〉Edit Current DBMS -〉Script -〉Sql -〉Format
-〉CaseSensitivityUsingQuote右边面板参数值 Value 选择No</font></p>
<p><font size="2"><span style="color: #fc0000;">6、</span></font><font size="2"><span style="color: #fc0000;">由cdm生成pdm,可以控制是否将关系生成引用;由pdm生成脚本,可以控制是否将引用生成外键</span></font></p>
<p><font size="2">7、</font>对于oracle而言,为表设置选项（如tablespace GPSSYSTEM）可使其创建到正确的表空间；为主键设置选项(using index
tablespace GPSINDEX）使索引创建到正确的表空间中</p>
<p>8、<font size="2">使数据模型图上显示中文：Tools-Model Options-Naming Convertion,在右侧Display处选择Name</font></p>
<p><font size="2">9、</font><font size="2">建立一个表后,为何检测出现Existence of index的警告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A table should contain
at least one column, one index, one key, and one reference.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以不检查 Existence
of index 这项，也就没有这个警告错误了！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 意思是说没有给表建立索引，而一个表一般至少要有一个索引，这是一个警告，不用管也没有关系！</font></p>
<p><font size="2">10、</font>创建一个表在修改字段的时候，一修改name的内容，code也跟着变化，如何让code不随着name变化<br />
Name和Code
的右侧都有一个按钮&#8220;＝&#8221;，如果需要不同步的话，把这个按钮弹起来就可以了。<br />
Tools-&gt;General
Options-&gt;Dialog-&gt;Name to Code Mirroring (去掉)</p>
<p>11、由pdm生成建表脚本时，字段超过15字符就发生错误（oracle）<br />
&nbsp;&nbsp;&nbsp;&nbsp;
原因未知，解决办法是打开PDM后，会出现Database的菜单栏，进入Database － Edit Current DBMS
－script－objects－column－maxlen，把value值调大(原为30)，比如改成60。出现表或者其它对象的长度也有这种错误的话都可以选择对应的objects照此种方法更改！<br />
或者使用下面的这种方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;
生成建表脚本时会弹出Database generation提示框：把options － check
model的小勾给去掉，就是不进行检查（不推荐）！<br />
&nbsp;&nbsp;&nbsp; 或者可以修改C:\Program Files\Sybase\PowerDesigner
Trial 11\Resource Files\DBMS\oracl9i2.xdb文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 修改好后，再cdm转为pdm时，选择&#8220;Copy the
DBMS definition in model&#8221;把把这个资源文件拷贝到模型中。</p>
<p>12、由CDM生成PDM时，自动生成的外键的重命名<br />
PDM Generation Options-&gt;Detail-&gt;FK index
names默认是%REFR%_FK，改为FK_%REFRCODE%，其中%REFRCODE%指的就是CDM中Relationship的code！另外自动生成的父字段的规则是PDM
Generation Options-&gt;Detail-&gt;FK column name
template中设置的，默认是%.3:PARENT%_%COLUMN%，可以改为Par%COLUMN%表示是父字段！</p>
<p>13、如何防止一对一的关系生成两个引用（外键）<br />
要定义关系的支配方向，占支配地位的实体（有D标志）变为父表。<br />
在cdm中双击一对一关系-&gt;Detail-&gt;Dominant
role选择支配关系</p>
<p>14、<font size="2">修改报表模板中一些术语的定义<br />
即文件：C:\Program Files\Sybase\PowerDesigner Trial 11\Resource
Files\Report Languages\Chinese.xrl<br />
Tools－Resources－Report
Languages－选择Chinese－单击Properties或双击目标<br />
修改某些对象的名称：Object Attributes\Physical
Data Model\Column\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ForeignKey：外键<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mandatory：为空<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Primary：主键<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table：表<br />
用查找替换，把&#8220;表格&#8221;替换成&#8220;表&#8221;<br />
修改显示的内容为别的：Values
Mapping\Lists\Standard，添加TRUE的转化列为是，FALSE的转化列为空<br />
另外Report－Title
Page里可以设置标题信息</font></p>
<p><font size="2">15、</font>
</p>
</span></span></font></span></span></font>
<p><font size="2">PowerDesigner11中批量根据对象的name生成comment的脚本</font></p>
<p><font size="2">'******************************************************************************<br />
'*
File:&nbsp;&nbsp;&nbsp;&nbsp; name2comment.vbs<br />
'* Purpose:&nbsp; Database generation cannot use object
names anymore <br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in version 7 and above.<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It always
uses the object codes.<br />
'<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; In case the object codes are not
aligned with your <br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object names in your model, this script will
copy <br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the object Name onto the object comment for
<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the Tables and Columns.<br />
'<br />
'* Title:&nbsp;&nbsp;&nbsp;
把对象name拷入comment属性中<br />
'* Version:&nbsp; 1.0<br />
'* Author：<br />
'* 执行方法：PD11 -- Open
PDM -- Tools --&nbsp; Execute Commands -- Run
Script<br />
'******************************************************************************</font></p>
<p><font size="2">Option Explicit<br />
ValidationMode = True<br />
InteractiveMode =
im_Batch</font></p>
<p><font size="2">Dim mdl ' the current model</font></p>
<p><font size="2">' get the current active model<br />
Set mdl = ActiveModel<br />
If
(mdl Is Nothing) Then<br />
&nbsp;&nbsp; MsgBox "There is no current Model"<br />
ElseIf Not
mdl.IsKindOf(PdPDM.cls_Model) Then<br />
&nbsp;&nbsp; MsgBox "The current model is not an
Physical Data model."<br />
Else<br />
&nbsp;&nbsp; ProcessFolder mdl<br />
End If</font></p>
<p><font size="2">' This routine copy name into code for each table, each column
and each view<br />
' of the current folder<br />
Private sub
ProcessFolder(folder)<br />
&nbsp;&nbsp; Dim Tab'running&nbsp; table<br />
&nbsp;&nbsp; for each Tab in
folder.tables<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not tab.isShortcut then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tab.comment =
tab.name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim col ' running column<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for each col in
tab.columns<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.comment= col.name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
if<br />
&nbsp;&nbsp; next</font></p>
<p><font size="2">&nbsp;&nbsp; Dim view 'running view<br />
&nbsp;&nbsp; for each view in
folder.Views<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not view.isShortcut then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view.comment =
view.name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />
&nbsp;&nbsp; next</font></p>
<p><font size="2">&nbsp;&nbsp; ' go into the sub-packages<br />
&nbsp;&nbsp; Dim f ' running folder<br />
&nbsp;&nbsp;
For Each f In folder.Packages<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not f.IsShortcut then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ProcessFolder f<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />
&nbsp;&nbsp; Next<br />
end sub</font></p>
<p><font size="2">16、</font>PowerDesigner 生成SQL的Existence of refernce错误问题
<br />
现象：用PowerDesigner生成SQL语句时，提示Existence of
refernce错误。<br />
原因：该表没有与其他表的关联(如外键等），而PowerDesigner需要存在一个refernce才能生成SQL.<br />
解决方法：<br />
&nbsp;&nbsp;&nbsp;
在工具栏空白处右键打开Palette面板，选中Link/Extended Dependency
按钮，然后在提示出错的表上添加到自己的Dependency。<br />
&nbsp;&nbsp;&nbsp; 重新生成SQL,你将发现刚才提示的错误没有了，问题解决。</p>
<p>17、<font size="2" face="宋体,sans-serif">利用PowerDesigner批量生成测试数据 <br />
主要解决方法:<br />
A:在PowerDesigner
建表<br />
B:然后给每一个表的字段建立相应的摘要文件<br />
步骤如下:<br />
Model-&gt;Test Data
Profiles配置每一个字段摘要文件General:输入Name、Code、 <br />
选择Class(数字、字符、时间)类型<br />
选择Generation
Source： Automatic、List、ODBC、File
Detail:配置字段相关信息<br />
所有字段摘要文件配置完成后双击该表-&gt;选择字段-&gt;Detail-&gt;选择Test Data
Parameters 摘要文件如果字段值与其它字段有关系在: Computed Expression
中输入计算列--生成测试数据:<br />
DataBase-&gt;Generation Test Data-&gt;<br />
选择:Genration
类型(Sript、ODBC)<br />
&nbsp;&nbsp;&nbsp;&nbsp; Selection(选择要生成的表)<br />
&nbsp;&nbsp;&nbsp;&nbsp; Test Data Genration(Default
number of rows 生成记录行数)</font></p>
<p><font size="2" face="宋体,sans-serif"><br />
</font></p>
<font size="2"><span style="font-size: 10pt;"><span style="font-family: Arial;"><font size="2"><span style="font-size: 10pt;"><span style="font-family: Arial;">
<p><font size="2"><br />
</font></p>
</span></span></font></span></span></font>
<p><font size="2"></font></p>
<font size="2"></font>
</span></span>
<img src ="http://www.blogjava.net/livery/aggbug/220324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/livery/" target="_blank">心情经纬</a> 2008-08-06 08:42 <a href="http://www.blogjava.net/livery/articles/220324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>