第三部分-数据库分析与设计-3-实体-联系建模

更新时间:2023-05-11 13:19:05 阅读: 评论:0

第三部分-数据库分析与设计-3-实体-联系建模
下图所⽰的 ER 图是对 DreamHome 案例的 Branch 视图 ER 建模的结果。
DreamHome Branch 视图的 ER 图
1. 实体类型
实体类型:被企事业单位认可的、能够独⽴存在的⼀组具有相同属性的对象。
ER 模型的基本概念是 实体类型,实体类型代表现实世界中具有相同属性的⼀组对象。实体类型能够独⽴存在,既可以是物理(真实)存在的对象,也可以是概念(抽象)存在的对象,具体实例如下表所⽰。注意,关于实体类型我们只能给出⼀个能⼯作的定义,⽬前尚不存在⼀种严格的形式化定义。这意味着不同的设计⼈员可能会确定不同的实体。
实体出现(entity occurrence):实体类型中可唯⼀标识的⼀个对象。
⼀个实体类型中每⼀个可被唯⼀标⽰的对象都可简称为⼀个实体出现。本书使⽤ “实体类型” 或 “实体出现” 这两个术语,然⽽在没有歧义时,我们也常使⽤ “实体” 这个术语。
不同的实体类型可以通过名字和⼀组属性来区分。⼀个数据库⾥通常包含很多实体类型。
实体类型的图形化表⽰
每个实体类型都⽤⼀个标有名字的矩形表⽰,名字通常是名词。在 UML 中,每个实体名字的⾸字母是⼤写的 (如 Staff 和PropertyForRent)。实体类型 Staff 和 Branch 的图形化表⽰如下图所⽰。
Staff 和 Branch 实体类型的图形化表⽰
2. 联系类型
联系类型:实体类型间的⼀组有意义的关联。
⼀个 联系类型 是⼀个或多个实体类型间的⼀组关联。每个联系类型都被赋予⼀个能够描述其功能的名字。DreamHome Branch 中有个 POwns 的联系类型,它将 PrivateOwner 和 PropertyForRent 这两类实体关联起来。
与实体类型⼀样,也有必要区分 “联系类型” 和 “联系出现”。
联系出现:由参与该联系的各个实体类型的⼀个出现组成的可被唯⼀标识的关联。
⼀个 联系的实例出现 是指相互关联的多个实体的实例出现。本书使⽤术语 “联系类型” 或 “联系的实例出现”, 和术语 “实体” ⼀样,⽆歧义时,我们更多的是使⽤ “联系” 这个术语。
考虑联系类型 Has, 它表⽰ Branch 实体和 Staff 实体之间的⼀种关联,即 Branch Has Staff(分公司拥有员⼯)。Has 联系的每⼀个实例出现都将⼀个 Branch 实体的实例出现和⼀个 Staff 实体的实例出现关联在⼀起。可以使⽤ 语义⽹(mantic net) 来表⽰联系 Has 的实例出现的个体。语义⽹是⼀种对象层的模型,它使⽤符号实⼼圆 “●” 表⽰实体,使⽤ “◈”表⽰联系。下图所⽰的语义⽹中,有三个 Has 联系的实例出现(分别标识为 r1、r2 和 r3)。每个联系都描述了某个 Branch 实体的实例出现和某个 Staff 实体的实例出现之间的关联。联系是使⽤连接参与实体(Branch 实体和 Staff 实体)的线来表⽰的。例如 r1 表⽰ Branch 的实体 B003 和 Staff 的实体 SG37 之间的关联。
联系类型 Has 的实例出现的语义⽹表⽰
注意,表⽰每个 Branch 和 Staff 实体的实例出现时,我们使⽤的是 Branch 和 Staff 的主关键字属性,即 branchNo 和 staffNo 的值。主关键字能唯⼀的标识每个实体的实例出现,在后⾯的⼩节中详细讨论。
如果使⽤语义⽹来表⽰某个企事业单位,将会陷⼊细节层⾯⽽难以理解。⽽是⽤实体联系(ER)模型的概念更容易标识企事业单位中实体之间的联系。ER 模型⽐语义⽹具有更⾼层次的抽象,这是因为 ER 模型将实体的实例出现集合组成实体类型,把联系的实例出现组合成联系类型。
联系类型的图形化表⽰
每个联系类型都表现为⽤现将相关的实体类型联系起来,并在线上标上联系的名字。通常⽤⼀个动词(如 Supervis 或 Manages)或者⼀个动词短语(如 LeadBy)来命名⼀个联系。同样,联系名字的⾸字母也应⼤写。应该尽可能保证同⼀个 ER 模型中的联系名字是唯⼀的。
⼀个联系还应标记⼀个⽅向,这通常意味着这个联系的名字仅在⼀个⽅向上有意义(如 Branch Has Staff 要⽐ Staff Has Branch 有意义的多)。所以,⼀旦确定了联系的名字后,为了让读者能够理解联系的名字的意义,要在名字旁边加上⼀个箭头符号来表⽰联系的正确⽅向(如Branch Has → Staff)。
2.1 联系类型的度
联系类型的度:参与联系的实体类型的个数。
包含在某个联系类型中的实体被看作该联系的 参与者 。⼀个联系类型的参与者的数⽬称为这个联系的 度。所以,联系的度表明了⼀个联系包含的实体类型的个数。度为 2 的联系称为 ⼆元联系。
度数为 3 的联系称为 三元联系。度数⼤于 2 的联系称为 “复杂联系”。
复杂联系的图形化表⽰。
UML ⽤⼀个菱形符号表⽰度⼤于 2 的联系。联系的名字放在菱形内部,在这种情况下,与该名字相关联的⽅向箭头可以省略。三元联系Registers 如下图所⽰,即本⽂开始 DreamHome 中的联系 Registers。
三元联系 Registers 的⽰例
2.2 递归联系
递归联系:同⼀个实体类型以不同的⾓⾊多次(⼤于 1 次)参与了同⼀个联系类型,这种联系类型被称为递归联系。
考虑递归联系 Supervis, Supervis 表⽰了员⼯和某位主管之间的关联,⽽这位主管也是公司的⼀名员⼯。也就是说,实体类型 Staff 连词参与了联系 Supervis:第⼀次参与的⾓⾊是⼀位主管,第⼆次参与的⾓⾊是⼀位员⼯(被管理者)。递归联系有时也叫作⼀元联系。
可以添加 ⾓⾊名称 来表明每⼀个参与联系的实体类型在该联系中的意义。在递归联系中,⾓⾊名称对于确定每个参与者的作⽤是⾮常重要的。下图表⽰了如何使⽤⾓⾊名称来描述 Supervis 联系,其中 Staff 实体类型第⼀次参与时的⾓⾊名称是 Supervisor,第⼆次参与时的⾓⾊名称是 Supervie。
具有 Supervisor 和 Supervie ⾓⾊的递归联系 Supervis
当两个实体之间存在多于⼀种联系时也可以使⽤⾓⾊名称。以下图为例,Staff 和 Branch 两个实体类型之间存在 Manages 和 Has 两种联系,此时添加⾓⾊名就能够标明每种联系的意义。具体来说,在 “Staff Manages Branch” 的联系中,Staff 实体中具有⾓⾊名称 “Manager”的某位员⼯管理 Branch 实体中具有⾓⾊名称 “Branch Office” 的某⼀分公司。类似的,对于 “Branch Has Staff” 联系,⾓⾊名称为“Branch Office” 的分公司雇佣⾓⾊名称为 “Member of Staff” 的员⼯。
通过两种不同的具有⾓⾊名称的联系——Manages 和 Has 关联起来的实体⽰例
当参与联系的实体在联系中的功能⽆⼆义时,通常不需要定义⾓⾊名称。
3. 属性
属性:实体或联系类型所具有的某⼀特性。
实体类型具有的特性称为属性。例如,实体类型 Staff 的属性有 staffNo、name、position 和 salary。属性被赋值以后就可以描述每个实体的实例出现,⽽属性值的集合则是数据库中所存储数据的主要构
成。
关联实体的联系类型也可以具有和实体类型类似的属性,这部分内容在第五⼩节讨论。
属性域:单个属性或多个属性所允许的取值集合。
每个属性都与⼀个取值集合相关联,这个集合称为 域。域定义了⼀个属性可能的取值范围,这与关系模型中的域的概念类似。例如,每⼀个房屋实体所拥有的可出租房间数量从 1 到 15 不等,所以,实体类型 PropertyForRent 的属性 rooms(房屋数量)的取值范围是从 1 到 15 的任意整数。
多个属性可以共享⼀个域。例如,实体类型 Branch、PrivateOwner 和 BusinessOwner 都拥有属性 address,且这些属性的域也相同,即可以取所有可能的地址。域还可以由其他⼀些域组合⽽成。例如,实体 Branch 的 address 属性域可以由以下⼦域组成:street、city 和postcode。
属性 name 的域更难定义,因为它包含了所有可能的名字:可以是⼀个字符串,不仅包括字母,还可能包括连字符 “-” 或其他⼀些特殊的符号。⼀个完整的数据模型应该包括 ER 模型中每⼀个属性的域。
如下所述,属性可以分为:简单属性 和 组合属性;单值属性 和 多值属性;导出属性。
3.1 简单属性和组合属性
简单属性:有独⽴存在的单个部分组成的属性。
简单属性不嗯能够在被划分为更⼩的部分,如 Staff 实体的 position 和 salary 属性就是简单属性。简单属性有时⼜称为 原⼦属性。
组合属性:由多个部分组成的属性,每个部分都可独⽴存在。
有些属性可以划分为更⼩的部分,⽽且这些更⼩的部分可以独⽴存在。例如,若 Branch 实体的 address 属性的值为(163 Main
St,Glasgow, G11 9QX),则这个属性可以继续划分为 street、city 和 postcode 三个属性,这三个属性的取值分别为(163 Main St)、(Glasgow)、( G11 9QX)。
建模时,究竟是将 address 属性当做⼀个简单属性,还是作为组合属性由三个⼦属性 street、city 和 postcode 构成,依赖于在⽤户数据视图中提及属性 address 时,是将其视为⼀个整体还是由多个独⽴部分组合⽽成。
3.2 单值属性和多值属性
单值属性:在实体类型的每个实例出现都只取⼀个单值的属性。
⼤多数属性都是单值属性。例如,实体类型 Branch 的每个实例出现的分公司编号(branchNo)属性的取值都只有⼀个(如 B003),因此属性 branchNo 被看做单值的。
多值属性:对于实体类型的某些实例出现可能取多个值的属性。

本文发布于:2023-05-11 13:19:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/883376.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:联系   实体   类型   属性
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图