PowerDesigner学习--概念数据模型CDM概要介绍

一、定义实体

用鼠标双击实体的符号,可以进入实体的属性页。

1、General项目

Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。在一个模型当中,实体的名字不能重复。

Code:在模型转化时一般作为对象的物理名称。Name用中文英文以便查询,写程序的时候方便,Code才是最终产生的Table Name。

Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。

2、Attributes项目

窗口中下面表格里的各项很类似于一个表结构的定义,但数据类型是经过抽象化的,采用独立的表示方法,不与任何一个具体的数据库系统相关。

在此项目中为当前实体添加属性。

后面的三列CheckBox分别代表:

  • M:此属性不允许为空值
  • P:此属性为主键标识
  • D:为可显示属性

按“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)。

转载于:https://www.cnblogs.com/liyazhou/archive/2010/08/16/1800736.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值