初学PowerDesigner时遇到一些困难,很难理解里面一些概念问题及一些用法,在这里抛砖引玉,希望能够得到高人的指点。
一,PD的4种模型文件。
概念数据模型(CDM)
CDM表现数据库的全部逻辑结构,与具体的数据结构无关,以ER图理论为基础,反映客观存在的事物。
物理数据模型(PDM)
PDM与具体的物理实现有关,如具体的DB,反映在软件设计上即是数据库物理设计。
面向对象模型(OOM)
一个OOM包含一系列的包,类,接口,和他们的关系。这些对象一起形成所有的一个软件系统
业务程序模型 (BPM)
BPM 描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。
CDM,PDM,OOM三者的转换关系如下图所示:
二,常见概念
域:PD中域的概念很像用户自定义的数据结构,通过定义自己的域后,设计者可以再N个实体中引用这个域,这样当设计者下次希望修改这个域的类型时,只需要更该这个域的类型即可,不必再每个用到的数据类型中一一修改。
业务规则:常见的业务规则有定义(Definition),事实(Fact),公式(Formula),需求(Requirement),验证(Validation),约束(Constraint)。但只有验证(Validation)和约束(Constraint)类型的业务规则才能生成到数据库中。eg,对日期进行控制,要求一个实体activity的开始日期小于结束日期,则只需在业务规则中选择Formula,然后再在experession中输入activity.begindate < activity.enddate即可(Name,Code已省落)。
实体中添加数据项时Add a DataItem 与 Reuse a DataItem的区别在于Add a DataItem 情况下,选择一个已经存在的数据项,系统会自动复制所选择的数据项。如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。
Reuse a DataItem情况下,只引用不新增,就是引用那些已经存在的数据项,作为新实体的数据项。
三,从CDM到PDM转换
CDM对象 | 在PDM中生成的对象 | 备注 |
实体(Entity) | 表(Table) |
|
实体属性(Entity Attribute) | 列Table Column) |
|
主标识符(Primary Identifier) | 根据是否为依赖关系确定是主键或外键 |
|
标识符(Identifier) | 候选键(Alternate key) |
|
关系(Relationship) | 引用(Reference) |
|
|
|
|
|
|
|
同一个表中的两列不能有相同的名称,如果因为外键迁移而导致列名冲突,PowerDesigner会自动对迁移列重命名,新列名由原始实体名的前三个字母加属性的代码名组成。主标识符在生成PDM中的主键和外键,非主标识符则对应生成候选键。
在PDM中生成的键类型取决于CDM中用于定义一个Relationship的基数和依赖类型。
1. 非依赖性一对多关系(Independent one-to-many relationships)
在非依赖性关系中,”一”端的实体主标识符将转化为:
(1) 由关系中”一(one)”端的实体生成的表的主键(Primary key)
(2) 由关系中”多(many)”端的实体生成的表的外键(Foreign key)。
如下图所示:
CDM中Independent one-to-many relationship
生成的PDM中的Independent one-to-many relationship
2. 依赖性一对多关系(Dependent one-to-many relationships)
在依赖性关系中,被依赖端的主标识符转化为主键,依赖端则产生一个与被依赖端主标识符同名称的字段同时作为同时作为依赖端的主键和外键,如果依赖端实体中已经存在主标识符转化为主键,则该键同主键共同组成主键,同时作为外键。
CDM中Dependent one-to-many relationship
生成的PDM中的Dependent one-to-many relationship
3. 非依赖性多对多关系(Independent many-to-many relationships)
在非依赖性多对多关系中,各实体的主标识符(Primary key)迁移至一个新生成的连接表中都作为外键,同时共同组成这个新连接表的主键,各实体的主标识符也转化为其所生成表的主键(Primary key)。下图所示CDM,每个雇员可以是一个或多个团队的成员,同时每个团队也可能包含一个或多个的雇员。
CDM中Dependent one-to-many relationship
生成的PDM中的Dependent one-to-many relationship
4. 非依赖性一对一关系(Independent one-to-one relationships)
在非依赖性一对一关系中,如果没有定义支配角色(Dominant role)的方向,则各实体的主标识符均自动迁移转化为另一实体生成的表的外键。
在 CDM 中我們有定义继承关系,在PDM 中又变的如何?为什么?
子类继承父类的全部或部分主属性(看CDM中如何设置),并把分类的主键作为自己的主键和外键,如果子类中已定义主键,则它会以2者合并作为自己的主键。
关于PD的参考资料,请见http://lyfvslw.download.csdn.net/。