PowerDesigner使用

(1)
适用场景:
用Powerdesigner对付比较大型的项目,是很好的,对于短平快类型的项目,如果时间要求你1个星期完成一个程序,那么完全没有必要用PowerDesigner,直接维护数据库就可以了,当表的数量超过10个(一个小系统的表在10个左右)的时候,建议还是用用Powerdesigner.
数据库模块是PowerDesigner的强项,分为CDM和PDM两种.
 
(2)
概念数据模型(CDM):
用实体,实体属性,实体间关系来对现实事物的抽象, 是对实体和实体间的关系的定义(即数据库的逻辑模型).不与具体的数据库有关系。(当我们接触多各种数据库后,我们会发觉不同的DB,会有不同的DB类型,存储过程及其它不同的方面)
物理数据模型(PDM):
与具体数据库有关,可由概念数据模型根据用户选择的具体数据库转换由来。 分析阶段的CDM转换成PDM后,便将抽象的实体、属性与关系,对应到实际数据库的数据表、字段、主键、外部索引键等内容.
如:
要用数据模型来表示一个部门。
在概念数据模型:是对部门这个现实事物的抽象。
如部门名称,departmentName,类型long character。
   
在物理数据模型:是根据用户选择的具体数据库,将概念数据模型转换为物理数据模型。如:
部门名称,departmentName,若用户选择mysql,其类型会转换为varchar;
                                                    若用户选择oracle,其类型会转换为varchar2.
 
(3)
使用PD创建数据库的过程:
先创建概念数据模型à再转化为物理数据模型à生成数据库的sql语句à生成测试数据的SQL语句à生成报表
1)
点击”entry”,选择创建实体。à双击图标,
1 。在“general”中设置名称;
2 。在"attribute"中设置数据表各列及其属性。
3 。其中,name和code的区别如下:
PowerDesigner(PD)中的name和code的区别:
Name是用于PD中显示出来的,方便与非技术人员的交流。
Code是用于真正生成sql代码的。即是对应的表名/列名。
 
5 。若为string,则选择variable character,且在弹出框中设置类型的大小。
6 。若为主键,则勾选后面的P
7 。若要设置各实体(表)的关系,则选择工具栏中的“relationship”,再选择主表,拉动到辅表(即是存在外键的表),再点击连线,设置表之间的关系,则可建立表与表之间各种关系。
2)
由概念数据模型à物理数据模型:
点击tool—general phycical data modeà选择相应的数据库à设置物理数据模型的名称,即可生成。
概念模型中的表之间关系,不会体现在实体的属性中(即出现外键之类的field)会在物理模型中自动生成,添加相应的外键字段到相应的表中。

3)

在物理数据模型中,可以预览,重新定义表属性,表之间的关系。

生成sql语句: 选择”datebase”-》”general database”,设置路径即可。

在生成sql语句时,加入创建数据库的语句:

先到菜单栏上的“model”->”model properties”中,在database中添加一个自定义的数据库名。

这样,在生成SQL语句时,就会自动加入创建数据库的语句了。

4)

生成测试数据:

选择”datebase”->”general test datas”即可。

5)

生成report:

选择”report”à”report wizard”,默认下一步即可。

(4)
CDM中,实例间各种关系(其它关系,暂略)
如一对多关系:
 
如上图,可以看到: (如何看基础表,主表,表关系,外键)
基础表:班级表(在一对多关系中,即是“一”端);
主表:    学生表(在一对多关系中,即是“多”端)。
班级与学生是一对多关系。(班级对学生的关系,即是附在“学生”表上的符号)
外键:即“学生”表中,须存在一个外键cId来关联“班级”表。
 
CDM中,dataItem的使用:
当向实体中添加各字段(属性)后,会在dataItems中相应添加各dataItem
用户也可以先向dataItems添加各字段,再在创建表时,进行引入;
在各表中也可以通过引入dataItem,对字段进行复用。
注意:

用户可以通过model->dataItems中看到所有的选项;

只有在概念数据模型中才能看到。
 
@@错误解决:
 

菜单栏上的“tool”-〉“Model Option”-〉“Model Setting”

把右边的“Data Item”数据框中的“Unique code”选项框取消掉。

如果在由CDM-〉PDM转换的时候提示属性错误,请把PDM GENERATION OPTIONS中的Check model钩取消掉.

 
CDM中,数据项的唯一性代码选项和重用选项
使用Tools--->Model Options->Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。
 
属性面板中的:Add a DataItem 与 Reuse a DataItem的区别
Add a DataItem 情况下:
选择一个已经存在的数据项,系统会自动复制所选择的数据项的所有属性,创建一个一样的属性。如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。
如:
在A表中,添加一个属性test:name=test,code=test,类型为long character(255)
在B表中,使用“Add a DataItem”后,也会出现:
当UniqueCode=true时,
name=test,code=test2,类型为long character(255);--code名保持唯一
当UniqueCode=false时,
name=test,code=test,类型为long character(255)-与原来完全一样
此时,dataitems中会出现两个test
当修改A表或B表中的test长度后,B表或A表中相应的test属性长度不会跟着变化。

Reuse a DataItem 情况下:
只引用不复制新增,就是引用那些已经存在的数据项,作为新实体的数据项:
如上面的情景:
当UniqueCode=true时,
name=test,code=test2,类型为long character(255);--code名保持唯一
当UniqueCode=false时,
name=test,code=test,类型为long character(255)-与原来完全一样
此时,dataitems中会只出现一个test
当修改A表或B表中的test长度后,B表或A表中相应的test属性长度会跟着变化。
 
Add a DataItem  与 Reuse a DataItem的区别在于:
Add a DataItem :复制一个属性;在dataitems中,会出现两个完全一样的数据项。
Reuse a DataItem :引用一个属性,在dataitems中,不会出现两个完全一样的数据项。以后修改实体中任一个test,其它所有的实体的test,也会跟着修改。
注意:
数据项的唯一性代码选项和重用选项,只作用于CDM模型中,对于转换成PDM后的表中字段Test,不存在上面的关联关系。如:修改实体中任一个test,其它所有的实体的test,也会跟着改。
(5)
小技巧:
1.若要让显示的视图变大:
先选择所有视图上的实体,再选择工具栏上的“A”(字体),全选symbol中的所有选项,最后修改size的大小即可。
另一种方式:ctrl+鼠标的滑轮,可以将界面变大。
2. 若不小心关闭了工具包,只须在工具栏右击选择palette即可。
3.修改表的外键关系,要在物理模型中的外键进行修改,如修改:on delete cascade on update cascade;
4.
检查CDM/PDM 模型中定义的东西是否合理,有错,可以采用check modelTool àcheck model,点击确定即可。若发现不合理,会出现相应的说明项。在定义完之后,常做这步来检查我们所做的东西是否有错。
5.
PDM中,设置自动增长列+默认值:
1)在PDM中,选择要设置为自动增长列,进行双击(或直接点击上面的“属性”按钮),在弹出的列的属性框中的”general”页面中的右下角,有一个”identity”的选项,选择它即可。
注意:在进入PDM模式后,须先设置当前的DBMS。即在database--change current DBMS中进行设置。如上面设置自动增长列,若不先设置当前DB为mysql,是不会出现identity的选项的。
 
2)设置默认值,只须在上面的列属性弹出框中,选择“stabdard check”页面,在其中的default下拉框中直接写入你要设置的默认值即可。
 
CDM/PDM中,在实体属性/表字段的特性窗口,打开如图所示的检查选项卡。


在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下
参数说明
Minimum属性可接受的最小数
Maximum 属性可接受的最大数
Default属性不赋值时,系统提供的默认值
Unit单位,如公里、吨、元
Format属性的数据显示格式
Lowercase属性的赋值全部变为小写字母
Uppercase属性的赋值全部变为大写字母
Cannot modify该属性一旦赋值不能再修改
List Of Values属性赋值列表,除列表中的值,不能有其他的值
Label属性列表值的标签
6.
在PDM中,连接查询数据库
连接DB:database --> connect
查询DB:database --> Execute SQL
7.
属性中的M:表示是否为空,若不为空,则勾选之。
在概念数据模型中,所有的数据类型都与DB的类型不相关。常的有integerlong characterbooleandate/datetime等。
8.
在PDM中创建索引:
双击相应的表,在弹出框中,切换到index页面-->添加一个索引的定义(添加name,code)点击"应用"-->双击新添加的索引名,在弹出的属性框中,添加此索引对应的列名.
 
(6)
逆向工程
逆向工程:从已存在的数据库表/数据库SQL文件,产生进新的 PDM,还可以还原到CDM
作用:
当你对当前数据库中各表及之间关系不清楚的情况下,采用逆向工程,将数据库还原成PDM,可以使你快速的掌握当前数据库。因为在PDM中会以图形的形式显示各表及之间关系。
数据来源:从脚本文件 或 一个开放数据库连接数据来源。
 File->Reverse Engineer->Database  或者 Database->Reverse Engineer Database
1)
直接ODBC连接数据库,生成新的PDM:
通过windows数据源管理,检查是否已存在mysql的ODBC数据源(若mysql odbc3.5.1),若没有则建立ODBC数据源。
打开Windows的控制面板->打开管理工具->打开数据源(ODBC)->新建ODBC,输入参数,且测试如下:

 

新建物理模型-->"DataBase----Reverse Engineer Database"-->通过powerDesigner使用ODBC数据源,连接数据库-->选择相应的owner显示相应的数据库,选择相应的数据表,即可进行逆向工程了。部分切图如下:
 
2)
要用sql文件进行逆向工程,
无须建立ODBC数据源;
如上图中右上角小图,只须选择:
using script file,导入相应的SQL文件即可。
 
(7)

 

7.1
导出数据库SQL时:(如下图)
Database à generation database时,须切换到selection页面:
1.  在第一个下拉框中选择你的导出的对应数据库包
2.  选择第一个下拉框后面的:
”include sub-object”—包括子包中对象
”include external shortcut”—当前的包中,应用了快捷方式,所有须选择之.
3.选中“selectAll”按钮,选中所有的表即可。--否则会发现导出的SQL文件中为空
 
7.2
导出oracle数据库SQL时:(如上图)
须进行以下的设置,使导出的sql中,表名等不包括引号。如:原来 create table “TABLE_A”.
在导出具体某种数据库时,须将当前的DBMS改为你要导出的对应数据库, 使PD在导出时,会根据当前正确的数据库生成相应的语法。
Database  à change current DBMS,在其中的new DBMS中选择要切换为数据库及版本即可。
 
7.3
powerDesigner 中添加新一列:
SoftwareType ,添加后,双击此列,在弹出的属性对话框中的comment中写入:
1. 系统软件;
2. 应用软件;
9. 其它软件.
 
即在生成sql语句时,也会加入提示信息:
create table T_Device_SW_Info
(
   Device_ID            varchar(32) not null,
   DeviceSW_ID          varchar(8) not null,
   DeviceSW_Name        varchar(200),
   Status               varchar(2),
   SoftwareType         CHAR1 comment '1. 系统软件;
            2. 应用软件;
            9. 其它软件.'
);
 
7.4
对于一个系统中的基础表,如DM中的t_device_spec表,它是基础表,它会关联到设备基本信息表,设备基本信息表由关联到其它表A,表A又关联到表B。所以,像t_device_spec这样的基础表,不能设置为on delete cascade on update cascade,否则一旦删除,会造成很多表的记录也跟着删除.所以一般设置为:on delete resict on update resict
(8)
未实践的有:
1、包(Package):当设计的数据库包含的实体较多,且逻辑上可能分布在多个子系统中时,可以使用包将他们分开。比如:可以按照逻辑将整个数据库分为A、B、C3个包。A中包含的是整个系统均需要访问的实体表,B中包含的是子系统B才会访问的实体表,C中包含的是子系统C才会访问的实体表,这样设计后会更有层次、更清晰,如果必要,包中还可以再分包。
2、快捷方式(shortcut):分包之后自然就会出现下面的问题:子系统包B中的表b需要和公共库包A中的a建立主外键关系,子系统包C中的表c需要重用公共库包A中的数据项item,要解决这类的问题可使用快捷方式。选中A包中的实体a或item,选择“Ctrl+C”,到包B或C中右键选择“编辑à粘贴为快捷键”,则会在B或C添加a或item的快捷方式,此时可方便的添加主外键关系或重用数据项。
3。CDM内容

 

定义域
定义关联、联合和继承
定义业务规则

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值