迷山文库

使用PowerDesigner画ER图详细教程

2018-06-29 05:25:27

使用powerdesigner画er图详细教程
使用powerdesigner画er图详细教程使用PowerDesigner画ER图详细教程

一、概念数据模型概述 数据模型是理想世界中数据特征的笼统。

数据模型应该满足三个方面的要求: 1)能够比拟真实地模拟理想世界 2)复杂为人所了解 3)便于计算机完成概念数据模型也称信息模型,它以实体-联络(Entity-RelationShip,简称 E-R)实际为基础, 并对这一实际停止了扩大。

它从用户的观念开赴对信息停止建模, 要紧用于数据库的概念级 设计。

通常人们先将理想世界笼统为概念世界,接着再将概念世界转为机械世界。

换句话说,一定是 先将理想世界中的客观对象笼统为实体(Entity)和联络(Relationship),它并不依赖于详细的 计算机系统或某个 DBMS 系统, 这种模型一定是我们所说的 CDM;接着再将 CDM 转换为计算 机上某个 DBMS 所支援的数据模型,如此的模型一定是物理数据模型,即 PDM。

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

1)数据构造表达为实体和属性; 2)数据操作表达为实体中的记载的拔出、删除、修正、查询等操作; 3)完整性约束表达为数据的本身完整性约束(如数据类型、检验、规章等)和数据间的参 照完整性约束(如联络、承袭联络等);二、实体、属性及标识符的定义 实体(Entity),也称为实例,对应理想世界中可差异于其他对象的“情形”或“事物”。

例如, 学校中的每个先生,医院中的每个手术。

每个实体都有用来描画实体特征的一组性质,称之为属性,一个实体由若干个属性来描画。

如先生实体可由学号、姓名、性别、降生年月、所在系别、退学年份等属性组成。

实体集(Entity Set)是详细相反类型及相反性质实体的集合。

例如学校全部先生的集合可 定义为“先生”实体集,“先生”实体集中的每个实体均具有学号、姓名、性别、降生年月、所 在系别、退学年份等性质。

实体类型(Entity Type)是实体集中每个实体所具有的分歧性质的集合,例如“患者”实体类 型为:患者{门诊号,姓名,性别,年龄,身份证号.............}。

实体是实体类型的一个实

例,在寓意明晓的状况下,实体、实体类型通常互换运用。

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

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

三、实体、属性及标识符的表达讲解 PowerDesigner 概念数据模型以及实体、属性创立。

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

2)完成概念数据模型的创立。

以下图示,对往后的任务空间停止简明讲解。

(以来再更详 细阐明)

3)抉择新增的 CDM 模型,右击,在弹出的菜单中抉择“Properties”属性项,弹出如图所示 对话框。

在“General”标签里能够输入所建模型的称号、代码、描画、创立者、版本以及默 认的图表等等信息。

在“Notes”标签里能够输入相关描画及阐明信息。

固然再有更多的标签, 能够点击 "More>>"按钮,那个地点就不再停止详细讲解。

二、创立新实体 1)在 CDM 的图形窗口中,单击工具选项版上的 Entity 工具,再单击图形窗口的空白处, 在单击的位子就浮现一个实体符号。

点击 Pointer 工具或右击鼠标,开释 Entitiy 工具。

如图 所示2)双击刚创立的实体符号,翻开下列图标窗口,在此窗口“General”标签中能够输入实体的 称号、代码、描画等信息。

三、添加实体属性 1)在上述窗口的“Attribute”选项标签上能够添加属性,如下图所示。

留意: 数据项中的“添加属性”和“重用已有数据项”这两项功用与模型中 Data Item 的 Unique code 和 Allow reuse 选项有关。

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

假设一个实体属性为强迫的,那样,那个属性在每条记载中都务必被赋值,不能为空。

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

留意:那个地点触及到域的概念,即一种尺度的数据构造,它可运用至数据项或实体的属性上 一、定义属性的尺度检验约束 尺度检验约束是一组确保属性有效的表达式。

在实体属性的特性窗口, 翻开如图所示的检验 选项卡。

在那个选项卡能够定义属性的尺度检验约束,窗口中每项的参数的寓意,如下 参数阐明 Minimum 属性可接纳的最小数 Maximum 属性可接纳的最大数 Default 属性不赋 值时, 系统提供的默许值 Unit 单位, 如公里、 吨、 元 Format 属性的数据显示格式 Lowercase 属性的赋值全部变为小写字母 Uppercase 属性的赋值全部变为大写字母 Cannot modify 该 属性一旦赋值不能再修正 List Of Values 属性赋值列表,除列表中的值,不能有其他的值 Label 属性列表值的标签 二、定义属性的附加检验 当 Standard checks 或 Rules 不能满足检验的要求时, 能够在 Additional Checks 选项卡的 Server 子页上,经过 SQL 语句中使 用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER%几个变量来定义 Standard 和 Rule,如图所示

%MINMAX%、%LISTVAL%、%UPPER%、%LOWER% 在 Standard Check 中定义的 Minimum 和 Maximum、List values 、uppervalues、 lowervalues%RULES% 在 Rules 特性窗口 Expression 选项卡中定义的有效性规章表达式 一、标识符 标识符是实体中一个或多个属性的集合,可用来唯独标识实体中的一个实例。

要强调的是, CDM 中的标识符等价于 PDM 中的主键或候选键。

每个实体都务必至稀有一个标识符。

假设实体只好一个标识符,则它为实体的主标识符。

如 果实体有多个标识符,则其中一个被指定为主标识符,其他的标识符一定是次标识符了。

二、假设定义主、次标识符 1)抉择某个实体双击弹出实体的属性对话框。

在 Identifiers 选项卡上能够停止实体标识符 的定义。

如下图所示

2)抉择第一行“主标识符”,点击属性按钮或双击第一行“主标识符”,弹出属性对话框,如图 所示3)抉择"Attributes"选项卡,再点击“Add Attributes”工具,弹出如图所示窗口,抉择某个属

性作为标识符就行了。

一、数据项 数据项(Data Item)是信息贮存的最小单位,它能够附加在实体上作为实体的属性。

留意:模型中赞同存在没有附加至任何实体上的数据项。

二、新建数据项 1) 运用“Model”---> Data Items 菜单, 在翻开的窗口中显示已有的数据项的列表, 点击 “Add a Row”按钮,创立一个新数据项,如图所示

2)固然您能够承袭设置详细数据项的 Code、DataType、Length 等等信息。

那个地点就不再详 细说通达。

三、数据项的唯独性代码选项和重用选项 运用 Tools--->Model Options->Model Settings。

在 Data Item 组框中定义数据项的唯独性 代码选项(Unique Code)与重用选项(Allow Reuse)。

留意: 假设抉择 Unique Code 复选框,每个数据项在同一个命名空间有唯独的代码,而抉择 Allow reuse ,一个数据项能够充任多个实体的属性。

四、在实体中添加数据项 1)双击一个实体符号,翻开该实体的属性窗口。

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

留意: Add a DataItem 与 Reuse a DataItem 的差异在于 Add a DataItem 状况下,抉择一个曾经存在的数据项,系统会自动复制所抉择的数据项。

假设您设置了 UniqueCode 选项, 那系统在复制进程中, 新数据项的 Code 会自动生成一个 唯独的号码,否则与所抉择的数据项完整分歧。

Reuse a DataItem 状况下,只援用不新增,一定是援用那些曾经存在的数据项,作为新实体 的数据项 一、联络 联络(Relationship)是指实体集之间或实体集外部实例之间的衔接。

实体之间能够经过联络来相互关联。

与实体和实体集对应,联络也能够分为联络和联络集, 联络集是实体集之间的联络,联络是实体之间的联络,联络是具有方向性的。

联络和联络集 在寓意明晓的状况之下均可称为联络。

依照实体类型中实例之间的数量对应关系, 通常可将联络分为 4 类, 即一对一 (ONE TO ONE)

联络、 一对多 (ONE TO MANY) 联络、 多对一 (MANY TO ONE) 联络和多对多联络 (MANY TO MANY)。

二、树立联络 在 CDM 工具选项板中除了公共的工具外,还包括如下图所示的其它对象发作工具。

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

如下图所示三、四种差不多的联络 即一对一 (ONE TO ONE) 联络、 一对多 (ONE TO MANY) 联络、 多对一 (MANY TO ONE) 联络和多对多联络(MANY TO MANY)。

如图所示

四、其他几类特殊联络除了 4 种差不多的联络之外,实体集与实体集之间还存在标定联络(Identify Relationship)、 非标定联络(Non-Identify RelationShip)和递归联络(Recursive Relationship)。

标定联络:每个实体类型都有自己的标识符, 假设两个实体集之间发作联络, 其中一个实体类型的标识 符进入另一个实体类型并与该实体类型中的标识符分歧组成其标识符时, 这种联络则称为标 定联络,也叫依赖联络。

反之称为非标定联络,也叫非依赖联络。

留意: 在非标定联络中, 一个实体集中的部分实例依赖于另一个实例集中的实例, 在这种依赖联络 中,每个实体务必至稀有一个标识符。

而在标定联络中,一个实体集中的全部实例完整依赖 于另个实体集中的实例, 在这种依赖联络中一个实体务必至稀有一个标识符, 而另一个实体 却能够没有自己的标识符。

没有标识符的实体用它所依赖的实体的标识符作为自己的标识符。

换句话来了解,在标定联络中,一个实体(选课)依赖一个实体(先生),那样(先生)实 体务必至稀有一个标识符,而(选课)实体能够没有自己的标识符,没有标标识符的实体可 以用实体(先生)的标识符作为自己的标识符。

递归联络:递归联络是实体集外部实例之间的一种联络, 通常笼统地称为自反联络。

同一实体类型中不 同实体集之间的联络也称为递归联络。

例如: 在“职工”实体集中存在格外多的职工, 这些职工之间务必存在一种引导与被引导的关系。

又如“先生”实体信中的实体包括“班长”子实体集与“平常先生”子实体集, 这两个子实体集之间 的联络一定是一种递归联络。

创立递归联络时,只需求单击“实体间树立联络”工具从实体的一 部分拖至该实体的别一个部分即可。

如图五、定义联络的特性在两个实体间树立了联络后,双击联络线,翻开联络特性窗口,如图所示。

六、定义联络的角色名 在联络的两个方向上各自包括有一个分组框, 其中的参数只对那个方向起作用, Role Name 为角色名,描画该方向联络的作用,平常用一个动词或动宾组表。

如:“先生 to 课目 ” 组框中应该填写“拥有”,而在“课目 To 先生”组框中填写“属于”。

(在 此只是举例阐明,能够有些用词不太合理)。

七、定义联络的强迫性 Mandatory 表洋那个方向联络的强迫关系。

选中那个复选框,则在联络线上发作一个联络 线垂直的竖线。

不抉择那个复选框则显示联络那个方向上是可选的, 在联络线上发作一个小 圆圈。

八、有关联络的基数 联络具有方向性,每个方向上都有一个基数。

举例, “系”与“先生”两个实体之间的联络是一对多联络,换句话说“先生”和“系”之间的联络是多对一

联络。

而且一个先生务必属于一个系,同时只能属于一个系,不能属于零个系,因此从“学 生”实体至“系”实体的基数为“1,1”,从联络的另一方向琢磨,一个系能够拥有多个先生,也 能够没有任何先生,即零个先生,因此该方向联络的基数就为“0,n”,如图所示CDM 是大少数开垦者运用 PD 时最先创立的模型, 也是整个数据库设计最高层的笼统。

CDM 是树立在传统的 ER 图模型实际之上的,ER 图中有三大要紧元素:实体型,属性和联络。

其中实体型对应到 CDM 中的 Entity,属性对应到 CDM 中每个 Entity 的 Attribute,在概念 上差不多上是逐一对应的。

但在联络上,CDM 有了比拟大的扩张,除了保管 ER 图原有的 RelationShip 概念之外,还添加了 Association,Inheritance 两种实体关系,下面就让我们 分手看看这些关系的用法和之间的差异 (下图中被标红的工具栏按钮一定是用来向实体中添加 这些关系的)。

其它,在讲解全部这些 CDM 中的元素之前,笔者先给出一个格外简明的 CDM 图,是对我 们最最熟习的学校场景的一个建模, 下文中提到的全部概念在图中都有表现, 大伙儿在看下文 的时辰能够对照着来看:

一. RelationShip(联络) 先给出 PD 手册里对联络的定义:“A relationship is a link between entities. For example, in a CDM that manages human resources, the relationship Member links the entities Employee and Team, because employees can be members of teams. This relationship expresses that each employee works in a team and that each team has employees.” 可见, 或许联络的概念确实太简明了吧,因此反而不那样好表述,因此 PD 的文档里也是用一个例 子来阐明浮现了啥样的状况我们就感觉两个实体间是有联络的。

当我们提起实体间联络的时辰,最先想到的生怕是 one to one,one to many 和 many to many 这三种联络类型,这些联络类型也是大伙儿最熟习的。

笔者对 ER 图原本的概念并不精 通, 但在 CDM 中, 联络还有其它三个能够设置的属性: mandatory (强迫性联络) , dependent (依赖性联络/标定关联)和 dominant(统制联络)。

这些属性对前面 PDM 的生成都有比 较大的妨碍,需求我们逐一有所了解。

它们基本上在联络的属性操作面板中设定的,见下图:

1.mandatory 联络能否具有强迫性,指的是实体间是不是一定会浮现这种联络;或许换句话说,当我 们在谈及一个联络的运用场景的时辰, 联络对应的那两个实体型的实体实例的个数可不能够 为零。

或许如此的讲解依然有点笼统,让我们举两个联络的例子,一个是对两边的实体都有 强迫性的,另一个则不然。

(1)教员--先生联络 那个联络首先是一个多对多联络,由于每个教员能够教多个先生,每个先生也都有多个 教员来担负他们的学业。

同时,那个联络对教员和先生基本上强迫性的,也一定是说,不存在任 何一个教员,他不担负任何一个先生的教学;也不存在任何一个先生,他没有任何一个任课 教员。

(2)先生--俱乐部联络 那个联络也是一个多对多关系,但它对先生那个实体型而言就不是强迫的(Optional,可 选的)。

每个俱乐部都有至少一个先生参加,但并不是每个先生都要去参加俱乐部的运动。

完整能够有一些先生,他们啥俱乐部都没参加。

下面的例子主假设从概念的角度来区分了 mandatory 和 optional 的差异。

实践上假设把这 个模型对应到我们最终来生成的表,假设 A-B 间的联络对 A 是 mandatory 的话,那样假设在 A 外头假设包括 B 的外键,那个外键不能为空值,反之能够为空值。

前面我们谈到 PDM 和

实践数据库的时辰,大伙儿会看到这一点。

2.dependent 每一个 Entity 型都有自己的 Identifier, 假设两个 Entity 型之间发作关联时, 其中一个 Entity 型的 Identifier 进入另一个 Entity 型并与该 Entity 型中的 Identifier 分歧组成其 Identifier 时, 这种关联称为标定关联,也叫依赖性关联(dependent relationship)。

一个 Entity 型的 Identifier 进入另一个 Entity 型后充任其非 Identifier 时,这种关联称为非标定关联,也叫非依赖关联。

概念的定义说起来依然有些拗口,说白了事实上一定是主-从表关系,从表要依赖于主表。

比 如在我们系统里要记载教员休假的状况,有一个实体型 Holiday,其属性包括休假的末尾时 间和天数, 每次有教员休假的时辰, 都要在那个表留下记载。

从我们的场景描画中能够看到, 实体型假期务必依靠于实体型教员,即关于每一个假期实例,务必指向某一个教员实例。

关于依赖型联络,务必留意它不能够是一个多对多联络,在那个联络中,务必有一个作 为主体的实体型。

一个 dependent 联络的从实体能够没有自己的 identifier. 3.dominant 那个联络属性是最为简明的, 它仅作用于一对一联络, 并指明这种联络中的主从表关系。

在 A,B 两个实体型的联络中,假设 A-->B 被指定为 dominant,那样 A 为那个一对一联络的 主表,B 为从表,同时在以来生成的 PDM 中会发作一个援用(假设不指定 dominant 属性 的话会发作两个援用) 。

比如教员和班级之间的联络, 由于每个班级都有一个教员做班主任, 每个教员也最多只能做一个班级的班主任,因此是一个一对一关系。

同时,我们能够将教员 作为主表,用教员的工号来唯独确定一个班主任联络。

二.Association(关联) 先来看一下 PD 给 association 的定义: “An association is a connection between entities. In the Merise modeling methodology an association is used to connect several entities that each represents clearly defined objects, but are linked by an event, which may not be so clearly represented by another entity.”。

在上一小段提到的那些 RelationShip,在格外多状况下(特殊是多对多关系中),我们会把 联络专门提出来,作为一个实体型放在两个需求被关联的实体型中间(在 PD 中,选中任何 一个联络, 在右键的弹出菜单中抉择“Change to Entity”命令即可完成联络转实体的操作) 。

但有的时辰, 把若干个实体型之间的联络笼统为一个实体型能够不太合适, 那个时辰你能够 抉择为这些实体型树立一个 association, 那样在生成 PDM 的时辰, 全部这些相关实体型的 identifier 都会被参加到 association 对应生成的表模型中。

因此,说白了,事实上 association 一定是实体型的一种特例,用来在建模的时辰更确切的表达实体间的关联信息。

在 PD 的文档 中举了一个录音带、顾客、商店三个实体型在租借录音带那个场景上发作关联,接着把租借 定义为上述三个实体型之间的 association 的例子,异常确切。

在我们的学校模型里,我定 义了家访做为教员和先生实体型中间的一个 association, 在接上去发作的 PDM 中大伙儿就可

能看到这种定义所发作的成效。

三.Inheritance(承袭) 这种关系在概念层面是最复杂了解的了,本文就不赘述了。

前面曾经讲解了 CDM 中关于实体间关系的要紧内容,接上去我们就来看看依照那个 CDM 所生成的 PDM 是一个啥模样:上图中全部标红的部分是我们最应该关心的内容, 由于他们基本上由于我们对实体型间的关系 的定义而发作的,下面给出一些简明的阐明。

1. “师生关系”和“先生俱乐部”这两个表是由于我们的多对多关系而发作的。

2. “假期”表的“工号”字段是由于我们将教员-假期关系指定为 dependent 而发作的。

3. “班级”表的“工号”字段是由于我们将教员-班级关系制定为 dominant 而发作的。

4. “家访”表中的“工号”和“学号”字段是由于家访是教员和先生实体型的 association 而发作的。

其它,记得我们在提到 dominant 属性的时辰说过,一个没指定 dominant 方向的一对一联

系将发作两个援用,下面我们就把原本的 CDM 中的教员-班级关系停止一个小小的修正, 去掉那个 relationship 的 dominant 定义, 那样最终来发作的 PDM 中教员表和班级表将相互包 含对方的主键(由于我们的班级表没有自己的主键,因此只能在班级表中看到多出来的列),截图如下:完