powerdesign
中将
cdm
转化为
pdm
,
然后转
powerdesign
中将
cdm
转化为
pdm
,
然后转
化
为数据库表
2011-01-10
22
:
39 PowerDesigner
是一款非常优秀的数据库建模工具,熟练的
使用该工具进行数据库建模,对软件系统的分析和设计有很大的帮助。
PowerDesigner
中有
几种模型可以创建,不过最常见的是概念模型
CDM(Conceptual
Data
Model)
和物理模型
PDM(Physical
Data
Model)
。毕竟
PowerDesigner
在数据库建模方面有很强大的功能。概念
模型不针对任何具体的数据库语法,
而以一种抽象的数据库为模型进行设计,
物理模型则通
常需要指定某一种具体的数据库,
在物理模型的设计中,
数据库语法将根据该具体的数据库
进行设计和定义。下面说说具体在使用
PowerDesigner
时需要我们留意的地方:
1.
建议所有
数据表中应该含有一个主键
ID
,这个
ID
没有特别的意义,只是用来唯一区别于每一条记
录的,
且它也应该只能有这种作用,
不应该含有其他作用。虽然在有些表中,表中的某一字
段我们能保证其是唯一的,但是我认为还是应该加上这样一个主键
ID
。这样做的好处是可
以使我们在做表与表之间的关系时,比较明显易懂。这个
ID
应该设为这个表的主键,且该
字段名可以命名为:
"
表名
_ID"
这样的名字,这样在做关系时,是非常明显的区别于不同的
表的主键,
另一方面这样做的好处是在用
PD
从概念模型转化为物理模型时,
一些关联关系
之间命名产生冲突
(
如果你将所有表的主键命名相同的话
)
。
另外再说一点,
这个与
PD
无关,
就是在做数据库表设计时,主键建议都采用同一种数据类型和长度,这样有好处。
2.
每个表
的主键的存在会在表
(
实体
)
属性的
Identifiers
中产生对应的记录,该记录会与表的主键进行
关联,
但我们需要改变一下该记录的默认
Name
和
Code
,建议以表名加字段名加
_PK
命名
之。比如表名为
dept
,则该值中
name
与
Code
值为
dept_ID_PK
,从这个意思上可以看出
来,该
PK
指的是
dept
表中的
ID
字段为主键。
3.
两个实体之间存在关系时,在
CDM
中,
是不需要在实体的表中创建单独的字段来存储对方的主键的。在概念模型转化为物理模型
时,
PowerDesigner
会自动添加对应的对方的主键字段名作为本表中的外键字段。这也是
在前面的第一条中,为何在实体的主键上建议命名方式为表名加字段名的原因。
4.
继承关系
中,
在
CDM
转化为
PDM
时,
子表和父表都会生成对应的表,
且父表中的所有字段都会
在子表中存在,
且你表的主键会同时成为子表的主键之一。
个人觉得实体之间的继承关系目
前在数据库设计上的使用意义不大,而
PD
在做这样的关系,主要是出于基于面向对象方
面的因素的考虑。建议少用或者不使用该关系。
5.Association(
注意不是
Association
Link)
主
要用于描述两个及以上的实体间关联关系的。和
relationship
最大的区别在于
Association
会单独生成一张表,且会存储相关实体的所有主键,从某种角度来说,它更
(
象
)
是一个关联
关系表。所以我们也可以通过
relationship
来实现,只需要新添加一个实体来进行多个实体
之间的关联即可。
Association
Link
是用来进行
Association
与其他实体
Entity
之间的关联
的,类似于
RelationShip
的功能,只是这个用于
Association
与
Entity
之间的联系,而
RelationShip
应用于
Entity
之间。
6.
从
CDM
转化为
PDM
很简单,在
tools
中,选择
Generate physical Data Model…
,选择你需要转化的数据库类型即可。此时
PD
会将对应的
关系以及数据类型转化为特定的物理模型中使用的数据库类型,
建议你改变一下你转换的物
理模型的名字,
不要用默认的。
7.
当我们添加或者修改字体中的字段属性时,
默认情况下
name
与
code
是同步的,也就是说修改
name
的时候,
code
也跟着变化,这个令人很烦,可以通
过下面的步骤将其去掉:
Tools-General Options-Dialog-Name to Code Mirroring
。将
Name to
Code Mirroring
默认的选中去掉,使其不选中,即可。
8.
在生成某一具体的物理模型下对应
的数据库脚本时,
我们可以插入自己的数据库脚本,
这样可以一并生成,
这通常在初始化数
据库和加入较详细的注释时很有用。
这个操作只能在物理模型中进行,
因为概念模型不针对
某一具体数据库,
而物理模型中加入脚本是针对具体数据库进行的。
添加自己的脚本的方法
是:双击选中物理模型中的你需要添加自已脚本的表,在左下角中点击
more
,选中其中的