PowerDesigner教程:概念数据模型

来自:http://tech.it168.com/m/2007-08-27/200708271858191.shtml

 

目标:本小节主要介绍PowerDesigner中概念数据模型CDM的基本概念。

 

一、概念数据模型概述

数据模型是现实世界中数据特征的抽象。数据模型应该满足三个方面的要求:

1)能够比较真实地模拟现实世界

2)容易为人所理解

3)便于计算机实现

 

概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。

 

通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,PDM

 

CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性以及完整性约束条件等,其中包括了数据结构、数据操作和完整性约束三部分。

1)数据结构表达为实体和属性;

2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作;

3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等);

 

 

二、实体、属性及标识符的定义

实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,学校中的每个学生,医院中的每个手术。

每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。如学生实体可由学号、姓名、性别、出生年月、所在系别、入学年份等属性组成。

 

实体集(EntitySet)是具体相同类型及相同性质实体的集合。例如学校所有学生的集合可定义为“学生”实体集,“学生”实体集中的每个实体均具有学号、姓名、性别、出生年月、所在系别、入学年份等性质。

 

实体类型(EntityType)是实体集中每个实体所具有的共同性质的集合,例如“患者”实体类型为:患者{门诊号,姓名,性别,年龄,身份证号.............}。实体是实体类型的一个实例,在含义明确的情况下,实体、实体类型通常互换使用。

 

实体类型中的每个实体包含唯一标识它的一个或一组属性,这些属性称为实体类型的标识符(Identifier),如“学号”是学生实体类型的标识符,“姓名”、“出生日期”、“信址”共同组成“公民”实体类型的标识符。

 

有些实体类型可以有几组属性充当标识符,选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。

 

三、实体、属性及标识符的表达

 

 

本小节主要介绍PowerDesigner概念数据模型以及实体、属性创建。

 

一、新建概念数据模型

1)选择File-->New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型。

 

 

2)完成概念数据模型的创建。以下图示,对当前的工作空间进行简单介绍。(以后再更详细说明)

 

 

 

3)选择新增的CDM模型,右击,在弹出的菜单中选择“Properties”属性项,弹出如图所示对话框。在“General”标签里可以输入所建模型的名称、代码、描述、创建者、版本以及默认的图表等等信息。在“Notes”标签里可以输入相关描述及说明信息。当然再有更多的标签,可以点击"More>>"按钮,这里就不再进行详细解释。

 

 

 

二、创建新实体

1)在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entitiy工具。如图所示

 

2)双击刚创建的实体符号,打开下列图标窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。

 

 

三、添加实体属性

1)在上述窗口的“Attribute”选项标签上可以添加属性,如下图所示。

 

 

注意:

数据项中的“添加属性”和“重用已有数据项”这两项功能与模型中DataItemUniquecodeAllowreuse选项有关。

P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。

 

如果一个实体属性为强制的,那么,这个属性在每条记录中都必须被赋值,不能为空。

2)在上图所示窗口中,点击插入属性按钮,弹出属性对话框,如下图所示。

 

注意:这里涉及到域的概念,即一种标准的数据结构,它可应用至数据项或实体的属性上。在以下的教程中将另立章节详细说明。

目标:

本小节主要介绍属性的标准检查约束、如何定义属性的附加检查。

 

一、定义属性的标准检查约束

标准检查约束是一组确保属性有效的表达式。在实体属性的特性窗口,打开如图所示的检查选项卡。

 

 

在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下

参数

说明

Minimum

属性可接受的最小数

Maximum

属性可接受的最大数

Default

属性不赋值时,系统提供的默认值

Unit

单位,如公里、吨、元

Format

属性的数据显示格式

Lowercase

属性的赋值全部变为小写字母

Uppercase

属性的赋值全部变为大写字母

Cannotmodify

该属性一旦赋值不能再修改

ListOfValues

属性赋值列表,除列表中的值,不能有其他的值

Label

属性列表值的标签

 

二、定义属性的附加检查

StandardchecksRules不能满足检查的要求时,可以在AdditionalChecks选项卡的Server子页上,通过SQL语句中使用%MINMAX%%LISTVAL%%RULES%%UPPER%%LOWER%几个变量来定义StandardRule,如图所示

 

 

%MINMAX%%LISTVAL%%UPPER%%LOWER%

StandardCheck中定义的MinimumMaximumListvaluesuppervalueslowervalues

 

%RULES%

Rules特性窗口Expression选项卡中定义的有效性规则表达式

目标:

本小节主要介绍如何定义实体的主、次标识符。

 

一、标识符

标识符是实体中一个或多个属性的集合,可用来唯一标识实体中的一个实例。要强调的是,CDM中的标识符等价于PDM中的主键或候选键。

每个实体都必须至少有一个标识符。如果实体只有一个标识符,则它为实体的主标识符。如果实体有多个标识符,则其中一个被指定为主标识符,其余的标识符就是次标识符了。

 

二、如果定义主、次标识符

1)选择某个实体双击弹出实体的属性对话框。在Identifiers选项卡上可以进行实体标识符的定义。如下图所示

 

 

 

2)选择第一行“主标识符”,点击属性按钮或双击第一行“主标识符”,弹出属性对话框,如图所示

 

3)选择"Attributes"选项卡,再点击“AddAttributes”工具,弹出如图所示窗口,选择某个属性作为标识符就行了。

 

待续。

目标:

本小节主要介绍数据项、新增数据项、数据项的唯一性代码选项和重用选项等。

 

一、数据项

数据项(DataItem)是信息存储的最小单位,它可以附加在实体上作为实体的属性。

注意:模型中允许存在没有附加至任何实体上的数据项。

 

二、新建数据项

1)使用“Model--->DataItems菜单,在打开的窗口中显示已有的数据项的列表,点击“AddaRow”按钮,创建一个新数据项,如图所示

 

 

2)当然您可以继续设置具体数据项的CodeDataTypeLength等等信息。这里就不再详细说明了。

 

三、数据项的唯一性代码选项和重用选项

使用Tools--->ModelOptions->ModelSettings。在DataItem组框中定义数据项的唯一性代码选项(UniqueCode)与重用选项(AllowReuse)。

注意:

如果选择UniqueCode复选框,每个数据项在同一个命名空间有唯一的代码,而选择Allowreuse,一个数据项可以充当多个实体的属性。

 

 

四、在实体中添加数据项

1)双击一个实体符号,打开该实体的属性窗口。

2)单击Attributes选项卡,打开如下图所示窗口

 

 

注意:

AddaDataItemReuseaDataItem的区别在于

AddaDataItem情况下,选择一个已经存在的数据项,系统会自动复制所选择的数据项。如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。

 

 

ReuseaDataItem情况下,只引用不新增,就是引用那些已经存在的数据项,作为新实体的数据项。

目标:本小节主要介绍联系的定义及使用。

一、联系

联系(Relationship)是指实体集这间或实体集内部实例之间的连接。

 

实体之间可以通过联系来相互关联。与实体和实体集对应,联系也可以分为联系和联系集,联系集是实体集之间的联系,联系是实体之间的联系,联系是具有方向性的。联系和联系集在含义明确的情况之下均可称为联系。

 

按照实体类型中实例之间的数量对应关系,通常可将联系分为4类,即一对一(ONETOONE)联系、一对多(ONETOMANY)联系、多对一(MANYTOONE)联系和多对多联系(MANYTOMANY)。

二、建立联系

CDM工具选项板中除了公共的工具外,还包括如下图所示的其它对象产生工具。

 

在图形窗口中创建两个实体后,单击“实体间建立联系”工具,单击一个实体,在按下鼠标左键的同时把光标拖至别一个实体上并释放鼠标左键,这样就在两个实体间创建了联系,右键单击图形窗口,释放Relationship工具。如下图所示

 

 

三、四种基本的联系

即一对一(ONETOONE)联系、一对多(ONETOMANY)联系、多对一(MANYTOONE)联系和多对多联系(MANYTOMANY)。如图所示

 

四、其他几类特殊联系

除了4种基本的联系之外,实体集与实体集之间还存在标定联系(IdentifyRelationship)、非标定联系(Non-IdentifyRelationShip)和递归联系(RecursiveRelationship)。

标定联系:

每个实体类型都有自己的标识符,如果两个实体集之间发生联系,其中一个实体类型的标识符进入另一个实体类型并与该实体类型中的标识符共同组成其标识符时,这种联系则称为标定联系,也叫依赖联系。反之称为非标定联系,也叫非依赖联系。

注意:

在非标定联系中,一个实体集中的部分实例依赖于另一个实例集中的实例,在这种依赖联系中,每个实体必须至少有一个标识符。而在标定联系中,一个实体集中的全部实例完全依赖于另个实体集中的实例,在这种依赖联系中一个实体必须至少有一个标识符,而另一个实体却可以没有自己的标识符。没有标识符的实体用它所依赖的实体的标识符作为自己的标识符。

 

换句话来理解,在标定联系中,一个实体(选课)依赖一个实体(学生),那么(学生)实体必须至少有一个标识符,而(选课)实体可以没有自己的标识符,没有标标识符的实体可以用实体(学生)的标识符作为自己的标识符。

 

递归联系:

递归联系是实体集内部实例之间的一种联系,通常形象地称为自反联系。同一实体类型中不同实体集之间的联系也称为递归联系。

 

例如:在“职工”实体集中存在很多的职工,这些职工之间必须存在一种领导与被领导的关系。又如“学生”实体信中的实体包含“班长”子实体集与“普通学生”子实体集,这两个子实体集之间的联系就是一种递归联系。创建递归联系时,只需要单击“实体间建立联系”工具从实体的一部分拖至该实体的别一个部分即可。如图

 

 

五、定义联系的特性

 

在两个实体间建立了联系后,双击联系线,打开联系特性窗口,如图所示。

 

 

六、定义联系的角色名

在联系的两个方向上各自包含有一个分组框,其中的参数只对这个方向起作用,RoleName为角色名,描述该方向联系的作用,一般用一个动词或动宾组表。

如:“学生to课目”组框中应该填写“拥有”,而在“课目To学生”组框中填写“属于”。(在此只是举例说明,可能有些用词不太合理)。

七、定义联系的强制性

Mandatory表示这个方向联系的强制关系。选中这个复选框,则在联系线上产生一个联系线垂直的竖线。不选择这个复选框则表示联系这个方向上是可选的,在联系线上产生一个小圆圈。

 

八、有关联系的基数

联系具有方向性,每个方向上都有一个基数。

举例,“系”与“学生”两个实体之间的联系是一对多联系,换句话说“学生”和“系”之间的联系是多对一联系。而且一个学生必须属于一个系,并且只能属于一个系,不能属于零个系,所以从“学生”实体至“系”实体的基数为“1,1”,从联系的另一方向考虑,一个系可以拥有多个学生,也可以没有任何学生,即零个学生,所以该方向联系的基数就为“0,n,如图所示

 

我们很容易的看出,面向对象模型和关系模型是不完全匹配的。比如

1.对象可以存储到多张表,表也可以存储多个类的对象。

2.对象之间的关系是双向的,而表之间的关系是单向的。

3.对象之间有继承关系,表之间没有。

为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数据库进行交互,但是对于程序的开发,仍然有很多问题需要解决。

9.1 基本转换模式

1.

用户可以通过类的持久属性和生成类型来控制类的自动转换,PowerDesigner仅会自动转换持久的类。转换的类型有表、迁移列和抽象数据类型,其中表和抽象数据类型都容易理解,迁移列主要控制继承中类的转换,我们会在继承转换中详细讨论它的用法。用户还可以指定生成表的名称。

2.属性

如果持久类的生成类型不是抽象数据类型,PowerDesigner会将该类中的持久属性转换成表的列。PowerDesigner提供了一些缺省的转换模式,比如数据类型的对应关系。用户可以定制转换的过程,他可以定义生成列的一些属性,名称、类型、长度等。

3.标识符

持久类的标识符会被转换成表的键,主标识符会被转换成主键。

4.操作

如果持久类的操作具有存储过程或者存储函数的范型,相应的存储过程或者存储函数会被生成。

9.2 关联转换

PowerDesigner会根据关联生成外键和表,支持所有的关联映射模式。 关联 转换规则:

一对一 对于单向的关联,一个外键会生成,外键的方向和关联的方向一致,父表的主键会迁移到子表中作为外键。

学校-校长

对于双向的关联,两个外键会被生成,用户需要手动删除其中的一个一对多 不管单项还是双向,只有一个外键被生成,多端持久类生成的表为子表,父表的主键会迁移到子表中作为外键一对多迁移主键 这是一对多关联的变体,如果一对多关联具有组合并且由一端包含多端,那么被迁移到子表的列同时又会是主键的一部分多对多 会生成一个中间关联表和两个外键,其中两端持久类的表的主键会迁移到关联表中作为主键和外键,两个外键由中间关联表分别指向它们用户可以通过端点的度来控制外键是否为必需的,如果子表对应的持久类端的最小度为1,那么外键为必需的,即子表的外键列是非空的;如果为0,那么外键为可选的。

9.3 继承转换

PowerDesigner会将继承转换成表和关联,用户通过基本映射中提到的生成类型来控制转换,生成类型表表示对于该持久类单独的表会生成,生成类型迁移列表示该类属性生成的列会存在于其他类生成的表中,没有单独的表会被生成。映射模式 说明 设定继承层次到单表映射 整个继承层次会被转换成一张表,通过表中的分类列来区分不同的类 根类生成类型为表,其他所有子类的生成类型为迁移列,根类需要设置主标识符每类一表映射 对于继承层次中的每一个类,单独的表会被生成,子类的表和父类的表通过外键关联,外键的列同时作为子类表的主键 所有类的生成类型为表,根类需要设置主标识符每具体类一表映射 只有继承层次中的叶子节点类会被转换成表,每一个非叶子节点类属性生成的列会被迁移到叶子类的表 所有非叶子节点子类的生成类型为迁移列,叶子节点的生成类型为表,根类需要设置主标识符PowerDesigner也支持混合映射模式的转换,不过这种转换并不常用,用户可以参考PowerDesigner的文档查看详细用法。

9.4 其他映射模式的支持

PowerDesigner还可以通过嵌入来支持细粒度的转换。比如,在员工信息类中,我们有一个属性家庭住址,该属性是对象类型,类型为地址类。我们不想为地址类单独生成表,只想把它嵌入到员工信息表中。在PowerDesigner中,我们可以通过,设置属性的类生成类型为嵌入来实现这一点。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值