ER图,对象联系图和类图的特征与比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ER 图、对象联系图和类图的特征与比较
第一部分:简述 ER 图,对象联系图和类图的基本概念和特点 ER 图:
ER 图是用来表示实体联系模型(
Entity Relationship Model )的方式,这个模型可以直
接从现实世界中抽象出实体类型和实体间的联系。
举个例子来说。
ER 图的约定表示方法。
矩形框,表示实体类型(即考虑问题的对象) 菱形框,表示联系类型(即实体间的联系) 椭圆形框,表示实体类型和联系类型的属性(对于键的属性,在属性下面划一 条横线)
直线,联系类型与其涉及的实体类型之间用直线相连,用来表示他们之间的联 系,在直线
端部标注联系的种类(1:1,1:N,M:N ) 再通过一个例子来说明用 ER 图表示现实世界的特点:
1)考虑零件和工程的关系,零件可以服务于不同的工程,一个工程也需要各种不 同的零
件,因此,建模的时候零件和工程是一个多对多的联系。
a) b) c) d) J#、项目名称JNAME 、项目开工日期 DATE ;而part 的属性有零件号 P#、 零件名PNAME 、零件颜色 COLOR 以及零件重量 WEIGHT 。
联系类型
从上面的可以看出,ER 图作为对现实世界的抽象,可以很方便的表示出现实 中实体以及实体间的联系, 不同形状的框代表不同的概念,
让读者一目了然哪些是
实体,哪些是联系,哪些是属性。
实体间的数量对应关系也通过连线两端的数字记 号体现出来了。
可以说, ER 图是一种简洁的模拟现实世界的符号方法。
对象联系图:
使用类型构造图的思想, 可以把ER 图扩充成为对象联系图。
对象联系图可以完整地揭 示数据间的联系。
对象联系图有一下几个基本成分:
F 面对上述例子做一个说明,同时给出
(1) (2) (3)
(4) 首先确定实体类型,这个例子
中, 再确定联系类型,正如前面所述, 把实体类型和联系类型组合成 确定实体类型和联系类型的
实体只有两个,就是工程和零件
工程和零件的关系是 M:N 的关系
ER 图(见图1) 在这个例子中,Project 的属性有项目号
椭圆,表示对象类型(相当于 ER 图中的实体类型)
小圆圈,表示属性是基本数据类型(例如整型、实型、字符串型等) 椭圆之间的边,表示对象之间的嵌套或引用
单箭头(- >)表示属性值是单值(属性可以是基本数据类型, 也可以是另一个
对象类型,即元组类型)
双箭头(- >> )表示属性是多值(属性可以是基本数据类型,也可以是另一个 对象类型,即关系类型)
双线箭头(= > )表示对象类型之间的超类与子类联系(从子类指向超
类) 双向箭头( <―― >)表示两个属性之间的联系为逆联系。
这里面有三个对象:学校、教师和教材,他们分别具有的属性可以分为两种, 一种是基本数据类型的属性,比如
University 的学校编号uno 、校名uname 和学校
所在城市city ,另一种是引用类型的属性 (这是ER 图所不能刻画的),如University 的staff 、p reside nt 等。
实体之间的联系通过椭圆之间的边表示, 由于在这个例子中 联系本身没有自己的属性,所以并没有出现联系对象。
可以发现,对象联系图相对ER 图来说略显复杂一些,因为它引入了引用类型 的属性,但是这也使得它的表现力强于 ER 图,能更好地描述现实的情况。
图的符
号表示方面,一方面秉承了 ER 图简明的风格,另一方面为了满足关系表述的要求, 添加了几个新的符
号,比如在表现数据的概化与特化的时候,用到了“=
> ”符号
(如图3所示)。
(6) (7)
F 面通过一个例子来看一看对象联系图的表示方法和特点:
面,
图2 一个对象联系图实例
类被表示为由三个部分组成的方框 上面部分给出了类的名称
中间部分给出了该类的单个对象的属性
下面部分给出了一些可以应用到这些对象的操作
关联是对类的实例之间联系的命名,相当于 ER 模型中的联系类型。
与联系有 关的内容有:
关联元数(degree ):与关联有关的类的个数,亦称为度数 关联角色(role ):关联的端部,也就是与关联相连的类。
角色名可以重新命 名,也
可以默认类的名字作为角色名
重复度(mult ip licity ):就是在一个给定的联系中有多少对象参与,即关联角 色
的重复度
F 面通过和上面对象联系图一样的例子来进一步说明类图的特征:
同前面的实体联系图比较, 同一个问题,很明显,类图和实体联系图风格大不 一样,可以看到图给人的感觉更加紧凑,
属性被封装在类的方框里面,
同时提供了
类内部的操作(如 University 类中的num_staf )。
在类之间的联系的表现方面,用 “ x …y”的形式表达一个类的对象数目的取值范围(即上面所说的重复度) ,例如
0…*就表示取值可以从 0到无穷大,关联线的两端都给出这样的表示, 就可以说明 类之
间的联系是1:N or N:1 or M:N 。
用类图表达关联类:
类图:
基于面向对象技术 UML (统一建模语言)的类图可以描述系统的静态结构,包括类和 类之间的联系。
类图和前面所说的 ER 图及对象联系图有着许多相似的地方,但是所用的术 语和符号不同。
下面的是 ER 图中术语和类图中术语的一个对照:
类图中的基本成分是类和关联: (1)
a) b) c) (2) c) a) b)
上面的那些关联并没有提及属性。
和ER图中联系可以有属性一样,类图中关联本
身也可以有属性或者自己的操作,这个时候就不能单纯地用上面的直线来表示关联了,而应该把关联模拟成“关联类”。
举个例子来说:在 ER模型中,学生与课程是一个多对多联系,其选课联系有一个属性
“成绩”。
我们也可以用类图来描述这样的实体和联系,如下图所示:
图中,学生
关联 Registration
因为也有自己的属性term 和 grade 以及操作 checkEligibility ,所以也把它表示成一个类,这就是"关联类”,用虚线与关联
类相连。
用类图表达聚合
聚合表达了成分对象和聚合对象之间的“is part of ”的联系。
在类图中聚合的一端
用空的菱形表示。
给出下面一个例子:
下图表示大学的聚合结构, University由AdminnistrativeUnit和School聚合而成。
在building和room之间联系的一端处的菱形不是空心的,它表示一种较强形式的聚合,
称为“复合”,复合中,一部分对象只属于一个整体对象,与整体对象共存亡。
图5用类图表达关联类
Student和课程Course表示成两个类,Student和Course之间的
图6用类图表达概化/特
用类图表达概化/特化
假设职员有三种:计时制职员、月薪制职员和顾问,他们的共享特征在Em ployee 超类中,自己的特有特征存储在相应的子类中,我们用类图来表示这样的联系,可以得
到下面的一张图:
Dep artme nt 图7用类图表达聚合
第二部分:比较3种图的优点和缺点,给出自己认为比较好的一种表示方法
在数据库技术中,概念建模走了一条“ ER 图— >对象联系图— >类图”的发展历程。
作为ER 图,它有连个明显的优点:一是接近于人的思维,容易被人所理解;二是与计 算机无
关,用户容易接受。
ER 图很好地表述了现实世界中的实体和实体间的联系,它能够
将实体的静态属性明确地表示出来, 另一方面又可以将实体间联系的动态属性表示出来, 并
且通过连接实体和联系的直线两端的联系种类
(即1:N,N:1,M:N )来表述实体间联系的维度。
但是,ER 图也有其固有的弱点,它不能用来表示实体之间的嵌套和引用关系,也就是 说,它不能表达递归结构。
为了使我们的概化模型具有更强的表现力和灵活性, 随后提出了 “嵌套关系模型”和“引用类型”这样的概念,进而提出了“对象关系图” 。
因此,可以说,
对象关系图是ER 图的一个扩充,是面向对象数据结构的一种重要图例表示方法。
对象联系图使用了对象标识符,使得嵌套和递归成为可能。
因此对现实世界的描述方面 比ER 图更加的灵活。
从对象联系图所用的符号来说,也是非常简明扼要,秉承了 ER 图友 善易懂的特点,对每一个对象分别建模,给出他们的属性,并且通过各种有向箭头指出对象 之间的联系和联系类型,单双箭头的不同表示也很方便地取代了原来 ER 图中略显繁琐的
M:N 表达方法。
当然,更主要的是对象联系图引入了面向对象的思想,支持数据的概化和 特化,对象
类型分为子类型和超类型,
所以说,对象联系图不仅完整地揭示了数据之间地联
系,也把查询地层次观点表现得一清二楚。
这些都是 ER 图所不具备的性质。
UML 类图可以说是对象联系图的进一步发展,用面向对象的类的概念和类之间的联系 来描述现实世界。
和面向对象程序设计有很多的共同点,
有自己的类名,有类中的属性以及
相关的操作。
类图可以用一种更简洁的方式清晰地表示现实世界中对象的属性,而不必像 ER 图和实体联系图那样在实体或对象的外面另外附加若干属性框,这样,使得图形更加紧 凑明了。
类图提供对概化和特化的很好的支持,
并能表达聚合,这是前两类图所不具备的性
所以说类图为我们提供了一个强大而完善的表示现实世界的途径。
所以,我认
为,从完备性和灵
活性来说,类图是三种图中最好的用来模拟现实世界的方 因为现实世界往
往不是实体以及实体间联系的简单堆加,
实体间的联系可能是多种多样
有的实体间有着非常紧密的联系(比如一个是另一个的衍生)
,这个时候如果用 ER 图
20..*
Room
质。
法, 的, 表示,可能会引起冗余,而利用类图中继承的概念, 然而,或许,在一些简单的事务抽象中,我们没有必要去对问题作类图的抽象,用
可以非常方便的建模并且暗示这种关系。
ER 图反 用
第三
部
分:
综述
ER 图、对象联系图和类图都是模拟现实世界的有力工具,他们的特点各不相同,但是 总的思想是类似的, 都是把现实世界建模成对象实体和联系, 因此, 他们在大多数情况下的 表现力是相当的。
但是, ER 图只能表现实体间的二维联系,对概念分层的表现力不够,而对象联系图和 类图引入了面向对象的思想, 使得对现实世界的表现向三维发展, 继承和引用的方法让图的 表现力空前提高,弥补了 ER 图的缺憾。
以上是我自学关于面向对象数据库中对象类型图、 类图,以及根据原来对 ER 图的理解 的一些体会和想法。
其实有些地方自己还是不是很明白,希望通过交流可以把问题搞清楚。
酱紫。
0124096 许俭 2003-12-7
而可以简明扼要地把问题马上表述清楚,
所以我认为,对大型的复杂的现实抽象建模时,
类图比较合适,对一些非常简单的小型问题抽象建模时,也许用 ER 图更加经济一点。