一、定义实体
用鼠标双击实体的符号,可以进入实体的属性页。
1、General项目
Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。在一个模型当中,实体的名字不能重复。
Code:在模型转化时一般作为对象的物理名称。Name用中文英文以便查询,写程序的时候方便,Code才是最终产生的Table Name。
Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。
2、Attributes项目
窗口中下面表格里的各项很类似于一个表结构的定义,但数据类型是经过抽象化的,采用独立的表示方法,不与任何一个具体的数据库系统相关。
在此项目中为当前实体添加属性。
后面的三列CheckBox分别代表:
按“Crtl + U”呼出“定制列过滤器”的窗口,可以根据自己的喜好和实际需要选择那些列出现在窗口中,那些隐藏。使用快捷键“Crtl + E”可以允许或者禁止当前过滤器。
二、定义关系
双击关系(Relationship)的符号,进入关系的属性页,
1、General项目
一般最好为关系取一个贴切的名字,本例的业务关系描述如下:一个部门有多个员工,我们使用“Has”作为这个关系的名字。
同样的我们也可以描述为:多个员工属于一个部门,可不可以使用“Belong to”作为关系名字呢?一般不推荐这样做,在概念图中有一个约定,关系的名字采用从“1,n”中“1”所在的方向向“n”所在一方进行读取的语义。本例即“1”在部门一方,从部门一方向雇员一方读取语义,即:部门有(Has)多个员工。
2、Detail项目
假定对于部门实体(Department)和雇员(Employee),具有如下关系:
根据以上关系,我们修改属性页,部门-雇员的方向采用默认的0,n,雇员-部门的方向修改为强制约束(Mandatory),或者从下拉框中选择“1,1”。
注:在PowerDesigner中,关系符号靠近实体端的一个“横线”代表强制性约束,“空心圆圈”代表无强制约束,即这一方可以无对象关联;“非分岔”线代表为“1”的关系,“分岔”线代表“多”的关系。以上四个符号共可以组合出16种关系(包含反向)。其中“多对多”的关系一般通过给出一个中间实体来进行分解,所以在许多概念图中,是看不到实际的“多对多”的关系存在的。
另外在关系的属性中还有两项:Dominant role和Dependent,可以表示更复杂的关系。
牢记:概念图中,外键是通过关系Relationship自动来建立的,不需要手动建立。不然会产生多余的键。所以设计时,关注实体本身的字段,以及实体间的关系,特别是多对多和依赖关系。
从CDM到PDM的转换需要注意:
不能改变Diagram的名称,在树状图中,如果勾选红色标出的Symbol表示覆盖修改,不勾选表示保护修改。
参照完整性约束是对关系来说的:
限制(Restrict):不允许进行修改或删除操作。若修改或删除主表的主键时,如果子表中存在子记录,系统将产生一个错误提示。这是缺少的参照完整性设置。
置空(Set Null):如果外键表允许为空,若修改或删除主表的主键时,把子表中参照的外键列设置为空值(Null)。
置为缺省(Set Default):如果指定了缺省值,若修改或删除主表的主键时,把子表中参照的外键设置为缺省值(Default)。
级联(Cascade):把主表中主键修改为一个新的值时,相应修改子表中外键的值;或者删除主表中主键的记录时,要相应删除子表中外键的记录。
注意理解以上的约束时,抓住操作的都是主表,子表的操作都是相对主表来说的,操作方式就是Update和Delete。
三、内部机制
1、PowerDesigner中复制一列时,实际上一个链接,源列的变动同时体现在复制列上;
2、数据库设计通常步骤:CDM确定主要结构-->生成PDM-->在PDM上修改,必要时生成CDM;
3、对于Oracle而言,为表设置选项(如tablespace GPSSYSTEM)可使其创建到正确的表空间;为主键设置选项(using index tablespace GPSINDEX)使索引创建到正确的表空间中;
域(Domain):简单地说,是用户自定义类型,但域还可以定义它的取值范围或默认值,采用域减少了维护字段类型的工作量,也减少数据的不一致性。
参照(Reference):在PowerDesigner中,可对参照完整性进行各项设置,参照的基数从0到n,对修改和删除约束可分别设置为None、Restrict、Cascade、Set Null、Set Default。由于insert包含在update操作中,因此没有单独的insert约束。
约束的不同设置产生不同的效果,以修改为例(删除相同):
None:父表修改,子表不影响。
Restrict:父表修改,如果子表相应记录存在,则出错。
Cascade:父表修改,如果子表存在,则相应的修改。
Set Null:父表修改,如果子表存在,则相应置空。
Set Default:父表修改,如果子表存在,则相应置默认值。
存储(Storage):不同的数据库中有不同的概念,sybase称为设备(Device),SQL Server称为文件或文件组(File、FileGroup),而Oracle称为表空间(tablespace)。