PowerDesigner之PDM(物理概念模型)

一、PDM概述

  PDM(物理数据模型),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库。

  PDM中涉及到的基本概念包括:

  • 表;
  • 列;
  • 视图;
  • 主键;
  • 候选键;
  • 外键;
  • 存储过程;
  • 触发器;
  • 索引;
  • 完整性检查约束;

  以上这些都是数据库的概念,不适合在PowerDesigner里面表述。

二、创建PDM

  创建PDM有4中方法:

  • 使用设计环境直接创建PDM;
  • 从现有数据库或通过SQL脚本逆向工程创建PDM;
  • 从CDM采用内部模型生成方法建立PDM;
  • 从OOM中的类图采用模型的内部生成方法建立PDM;

  利用CDM生成PDM是最符合设计思路的方法,但在很多企业开发过程中,都是在设计环境中直接建立PDM,因为大部分企业没钱发那么多工资你设计那么多图。

  1、在设计环境直接建立PDM

  在设计环境直接建立PDM的步骤如下:

  1、在PowerDesigner主窗口选择File->New Model,在打开的创建左侧选择Physical Data Model选项

  

  2、右侧选项的意义

  • Model name:模型名称;
  • DBMS:数据库类型,也可以单击后面的文件夹按钮,选择“浏览文件夹”,选择xml文件作为目标(CDM转PDM);
  • Share the DBMS definition:共享数据库定义;
  • Copy the DBMS definition in model:从数据库定义中拷贝,用于CDM转PDM;
  • First Diagram:创建一个PDM,默认会有一个Diagram,这里是选择这个Diagram的类型;

  3、Extended Model Definitions选项卡的意义

  当通过PowerBuilder来开发时,若选中PowerBuilder则生成的PDM可以从Catalog表中获取表和列的扩展属性。

  

  4、点击“确定”按钮,打开新建的PDM设计窗口

  

  工作区包括左侧的浏览窗口、右侧的设计窗口、下侧的输出窗口和浮动的工具窗口,可以利用工具窗口中的图标在设计窗口中设计PDM。

  5、各种图标的作用

  

  在建立PDM之前,可以定义PDM的显示参数,以满足PDM的显示需求。

  2、定义PDM的显示参数

  1、Tools->Display Preferences打开设置窗口,在General节点中设置整个模型的显示参数。

  

  各个选项含义如下:

  • Window color:窗口颜色;
  • Unit:长度度量单位。Inch(英尺)、Millineter(毫米)和Pixel(像素);
  • Grid:网格线;
  • Diagram:
  • Show page delimiter:显示分页线;
  • Constrain Labels:是否需要限定选项卡和连接对象的距离;
  • Content节点:设置在图形窗口PDM中每类对象的显示样式的参数。
  • Format节点:设置每类对象的显示格式,如大小、变现颜色、填充颜色、阴影、字体等;
  • Modify:按钮可以进行更详细的设置;

  3、定义PDM的模型属性

  在Model Properties(模型属性)窗口中修改模型属性的方法如下:

  1、选择Model->Model Propertise命令或右击图形窗口的背景,在弹出的快捷菜单中选择Properties命令

  

  各个选项的含义如下:

  • Name:名称;
  • Code:代码;
  • Comment:注释;
  • File name:文件名;
  • Author:作者;
  • Version:版本;
  • DBMS:数据库管理系统
  • Database:数据库名称
  • Default diagram:打开模型时默认显示的图;

  2、单击Database后面的Create图标,进入Database Propertise窗口。在窗口中可以配置创建数据库选项

  • General:通用属性;
  • Name:数据库的名称;
  • Code:数据库的代码;
  • DBMS:数据库的类型;
  • Rules:规则;
  • Script:插入到数据库SQL脚本开始和结束为止的脚本;
  • Physical Options:数据库可利用的物理选项;

三、创建表

  创建表的方式,只点击工具栏的Table图标就可以了。

  其他属性页的意义分别为:

  Column(列)、Trigger(触发器)、Keys(键)、Procedure(存储过程)、Rules(规则)、Indexes(索引)和Check(约束);

  

四、创建列

  1、创建列

  1、列的基本属性

  列的基本属性如下:

  • Name:列名;
  • Code:列的代码;
  • Data Type:数据类型;
  • Domain:以域作为数据类型;
  • Comment:注释;
  • M:非空;
  • P:主键;
  • D:在图形窗口显示;

  

  

  选中某一列,单击Propertise图标(或双击列),打开Column Properties窗口,在其中可以定义列的其他属性。

  

  General选项卡属性如下:

  • Displayed:是否在图形符号中显示;
  • Foreign Key:外部键;
  • Computed:计算列;
  • Mandatory:非空;
  • Identiry:自增;

  Detail选项卡可以定义的属性如下:

  • Column fill parameters:Null values(允许空值列个数的百分比)、Distince values(允许不同值列个数的百分比)和Average length(列值的平均长度);
  • Test data parameters:Profile(测试数据的取值)。单击右面的List按钮,可以进一步定义测试的取值方式,可以是字符型、数值型或日期/时间型;
  • Computed expression:定义计算列表达式;

  2、创建计算列

  计算列是通过表达式对其他列的值进行运算后得到的结果。

  (1)、在列的通用的数据约束定义窗口中,单击Computed expression列表框右面的Edit With SQL Editor按钮,弹出计算列表达式定义窗口:

  

  

  当数据库选择的是MySQL时,是没有这个框的(因为是MySQL没有计算列这个概念)。

  3、约束

  Standard Checks选项卡,用于在其中定义约束。

  • Values:Minimum(最小值)、Maximum(最大值)和Default(默认值)。
  • Characteristics:Format(显示格式)、Unit(单位)、Uppercase(大写字母)、Lowercase(小写字母)和Cannot modify(不允许修改)。
  • List of values:定义取值列表。

  

  4、命名约束

  Additional Checks选项卡专门用于定义命名约束

  

  5、创建序列

  双击列,进入列属性

  

  

  • Start with:起始数字
  • Min value:最小值;
  • Max value:最大值;
  • Incremented by:增量值;

五、创建参照及参照完整性

  参照是父表和子表之间的连接,它定义了两个表中对应列之间的参照完整性约束。

  1、参照模型设置

  模型选项决定了参照的特性,可以通过Tools->Model Options打开模型选项(Model Options)窗口。

  

  建议那两个Auto什么的属性还是的勾去掉吧,手动搞,好像有点难看的明白这两个选项的意思。

  模型项与连接的关系

  

  选项意义:

  • Unique code:表示模型中的参照代码唯一;
  • Auto-reuse columns:表示同父表主键拥有相同的代码列或子表列不是其他表的外键,则该列被当做子表的外部键;
  • Auto-migrate columns:表示产生参照时,父表的主键将迁移到子表中成为外部键;
  • Domain:表示如果选中Auto-migrate columns和Domain复选框,在建立参照时,主键的域将迁移到外部键上;
  • Check:表示如果选中Auto-migrate columns和Check复选框,在建立参照时,主键的检查参数将迁移到外部键上;
  • Rules:表示如果选中Auto-migrate columns和Rules复选框,在建立参照时,主键的业务规则将迁移到外部键上;
  • Primary Key:表示参照连接主键列到外部键列;
  • User-defined:表示参照不产生连接;

  Auto两个复选框的意义:

  

  2、创建参照及定义相关属性

  创建参照的具体方法:

  1.在PDM模型的Palette工具栏中单击Reference图标;

  

  2.双击新建立的连接,打开Reference Properties窗口,在其中可以修改参照的各个属性:

  

  • Name:参照名;
  • Code:参照代码;
  • Comment:注释;
  • Parent table:参照的父表;
  • Child table:参照的子表;
  • Generate:是否在数据库中生成参照;
  • Joins选项卡可以定义表与表之间的连接;

  3.Join(连接)可以用来连接主键、候选键和外部键,或在用户指定的列之间建立连接;

  

  4.连接可以通过上节的模型选项自动建立,也可以手工建立;如果手工指定,也可以利用Reuse Columns图标、Migrate Columns图标和Cancel Migration图标实现列重用或迁移。

  • Reuse Columns:重用子表中存在并与父表相同的列;
  • Migrate Columns:表示将父表的主键迁移到子表中作为外部键;
  • Cancel Migration:表示删除从父表中迁移到子表的所有列;

  5.Integrity选项卡用来定义参照完整性。主要用于设置父表中修改或删除参照列的数据对子表的影响。

  

  • Constraint name:约束名,生成SQL脚本时使用此名称。
  • Implementation:实现方式;

  选项意义:
  Declarative:声明式,吧参照完整性约束定义为一种特殊引用。
  Trigger:通过触发器在相应DBMS中维护数据的有效性;

  • Cardinality:基数。表示父表中的每个实例,子表中可能拥有的实例的最少和最多数。
  • Update/Delete constraint:表示修改父表列值后子表列值如何修改:

  None:修改或删除父表,对子表无影响;
  Restrict:如果子表中存在一个或多个对应值,不能修改或删除父表中的值;
  Cascade:修改或删除父表中值的同事将子表中对应的值也修改或删除;
  Set null:修改或删除父表中值的同时将子表中对应的值置为NULL;
  Set Default:修改或删除父表中值的同事将子表中对应的值置为默认值;

  • Mandatory parent:是否强制子表中的外部键列值都必须在父表中有相应的列值;
  • Check on commit:是否在提交时验证参照完整性;
  • Change parent allowed:是否允许修改父表中参照列的值;

  6.此外,还可以修改参照图符号上显示的文本信息,以满足不同系统的需求。

  此PDM模型窗口中选择Tools->Display Preferences命令,打开Display Preferences窗口,单击Object View->Reference节点。

  

  • Name:参照的名称;
  • Constraint name:参照完整性约束的名称;
  • Join:两个表相同列的连接名称;
  • Rederential integrity:参照完整性;
  • Cardinality:基数;
  • Implementation:参照完整性实现的方式;

  设置参照完整性后的例子如下:

  

六、创建域

  在PDM中,使用域有助于识别信息的类型,易于使不同表中列的数据特征标准化。域为列定义了一组有效的值,可以把Data Type、Check、Rule、Mandatory等信息关联到域上。

  1、创建域

  1、打开PDM模型,选择Model->Domains命令,在空白行单击,可以增加一行。分别在Name、Code和DataType栏中输入名称、代码和数据类型;

  
  2、单击空白行可以增加一行;
  3、双击行前面的箭头,可以进入属性设置:

  

  其中General选项卡主要意思如下:

  • Name:名称;
  • Code:代码;
  • Comment:注释;
  • Data type:数据类型;
  • Length:长度;
  • Profile:测试数据定义文件;

  其他选项卡与前面的类似。

  2、使用抽象数据类型

  在为域选择数据类型时,可以指定抽象数据类型。抽象数据类型是用户自定义的数据类型。ADT数据类型因数据库系统而存在差异,在PowerDesigner系统中允许使用的ADT数据类型如下表:

类型 描述 示例
Array 固定长度元素的集合 Varray Oracle8
List 不固定长度对象的集合 Table Oracle8
Java Java类 Java Adaptive Server Anywhere
Object 包含属性列表的对象 OBJECT Oracle8
Structured 包含属性列表的结构体 NAMED ROW TYPEDB2
CLR .Net通用语言运行时 Microsoft SQL Server 2005

    

  1、普通的抽象数据类型

  打开PDM模型,选择Model->Abstract Data Types命令。

  

  双击行进入

  

  2、OBJECT类型的抽象数据类型

  如果在Type下拉列表框中选择OBJECT选项,即可建立一个抽象数据类型对象。

  

  选择Attributes选项卡,在Name、Code和Data Type栏中分别输入。

  
   

七、创建表中的键

  键是表中可以唯一识别一条记录的一个或多个列的集合。PDM支持两种类型的键:主键、候选键。

  1、主键

  定义主键很简单,选中作为主键列的P复选框即可。

  

  如果利用了逆向工程,从已经存在的数据库逆向到PDM模型,可能无法生成主键或者在你想工程数据库时没有选择重建主键选项,此时需要重建主键。

  重建主键的方法:

  1、选择Tools->Rebuild Objects->Rebuild Primary Keys命令。
  2、打开Primary Key Rebuild窗口;
  3、选择要重建主键表前的复选框,确定;

  

  2、候选键

  候选键(Alternate Key)指一列或多列,表中每条记录的列值都是唯一的。每个候选键都在数据库中生成唯一索引或唯一约束。

  1、打开表的Keys选项卡,在Name或Code栏中单击,系统自动增加一个新键。设置键的名称和代码;

  2、双击新键行的行首箭头,在打开的Key Properties(键属性)窗口中选择Columns选项卡,该选项卡列出了键包含的所有列;

  3、单击Add Columns图标,在窗口中列出了表中包含的所有列,选择一个或几个需要的列;

  

  3、键的约束名

  利用PDM生成数据库脚本时,键也包含在其中,为了方别识别和修改,需要为其定义统一的约束名。如果不指定,系统会自动建立一个默认的。

  选择定义了主键的表,双击鼠标打开表属性,选择Keys选项卡,显示所有的主键和候选键,选中其中一个,单击其中的Properties,在Constraint name文本框中输入键的名称。

  

八、创建索引

  1、创建索引

  建立索引的具体方法如下:

  1、在表属性窗口,选择Indexes选项卡,空白行单击,系统会自动给出索引的名称和代码,可以根据需要进行修改。
  2、单击Properties图标,打开Index Properties,General选项卡的条目含义为:

  • Name:索引名称;
  • Code:索引代码;
  • Comment:索引注释;
  • Table:包含索引的表;
  • Type:索引的类型,普通索引、全文索引、Xml索引
  • Unique:唯一索引;
  • Cluster:聚集索引;

  3、选择Columns选项卡,可以选择索引包含的列;

  

  2、重建索引

  重建索引具体方法如下:

  Tools->Rebuild Objects->Rebuild Indexes命令,打开Index Rebuild(重建索引);

  

  各选项含义如下:

  • Primary key:重建主键索引;右边输入为主键索引名称:%TABLE%_PK
  • Other keys:重建候选键索引,右边输入为默认的候选键索引名称:%TABLE%_AK
  • Foreign key indexes:重建外部键索引,右边输入为%REFR%_FK
  • Foreign key threshold:建立外部键索引所需的表最小记录数
  • Delete and Rebuild:重建索引之前删除已存在的索引
  • Add missing indexed:只增加缺少的索引

  在Selection选项卡中选择需要重建索引的表;

  

九、创建视图

  创建视图有两种方法:

  1、选择表,Tools->Create View命令,建立包含所选表全部字段的视图;
  2、建一个空视图,然后选择表或直接定义SQL语句。

  第二种方式操作如下:

  用工具栏的View图标,创建一个视图,双击进入视图View Properties(视图属性)窗口。

  

  其General选项卡的基本属性含义如下:

  • Name:视图的名称;
  • Code:视图的代码;
  • Comment:视图的用途;
  • Usage:视图的用途;
  • query only:只用于查询;
  • Updateable:用于查询和修改;
  • With check option:在视图插入数据时要收到表中已定义约束的限制;
  • Dimensional Type:维度类型;
  • Generate:是否在数据库中生成视图;
  • User-defined:在用户自定义视图时是否访问查询编辑器;

  选择SQL Query选项卡,为视图定义对应的SQL语句。

  点击Edit With SQL Editor进入SQL编辑器能够非常方便地书写SQL语句。

  

posted @ 2015-08-11 16:51  倾城风云  阅读(468)  评论(0编辑  收藏  举报