首页 > 其他 > 详细

E-R图简介

时间:2018-09-21 22:13:34      阅读:319      评论:0      收藏:0      [点我收藏+]

版权声明:本文为作者创作,转载请注明出处:https://www.cnblogs.com/Feq1007/p/9687270.html

在学习E-R图之前,我们应该先搞清楚,E-R图是干什么的E-R图由什么构成以及如何才能画一个E-R图

我们就按照这个顺序来一起学习一下E-R图。

首先,E-R图,全称为实体联系模型实体关系模型实体联系模式图(ERD)英语:Entity-relationship model)由美籍华裔计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型模式图。也就是说,我们可以通过E-R图,对信息世界进行建模,对现实世界进行第一层抽象。说白了就是用图的方式描述事物的属性和事物之间的关系!

既然是要描述事物属性,我们首先要知道一些信息世界的基本概念

(1)实体(Entity):

  客观存在并可相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念或联系。比如一个学生、一门课、老师与学院的工作关系等都属于实体。

(2)属性(Attribute):

  实体所具有的某一特性。一个实体可以由多个属性来刻画。这个应该很好理解,就像人的实体有名字,身高,体重,出生年月等等。这些属性组合起来表征一个人。

(3)(Key):

  唯一标识实体的属性集称为码。例如学生的学号就唯一标识了学生实体,还有我们的身份证唯一标识了我们。

(4)(Key):

  域是一组具有相同数据类型的值和集合。属性的取值范围来自某个域。比如,姓名的域是字符串集合,年龄的域是整数,性别的域为(男,女)。

(5)实体型(Entity Type):

  具有相同属性的实体必然具有共同的特征和性质。用实体名以及其属性名集合来抽象和刻画同类实体,称为实体型。举个栗子:学生(学号、姓名、性别、出生年月、所在院系、入学时间)就是一个实体型。

(6)实体集(Entity Set):

  同一类实体的集合就是实体集。比如:全体学生就是一个实体集。

(7)联系(Relationship):

  现实世界中,事物内部及事物之间的关系,反映在信息世界中即是实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常指实体各属性之间的联系;实体间的联系通常指不同实体集之间的联系。

介绍完信息世界中基本概念后,即是完成了描述事物的属性这一步,接下来就是事物之间的关系这一步了。

首先是两个实体型之间的联系,几乎所有复杂的联系,都可以简化为好几个两个实体集之间的联系,所以我们先讨论两个实体型之间的联系。

两个实体型之间的联系可以分为三类:

(1)一对一联系(1:1):

  对于实体集A中每一个实体,实体集B中最多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A和实体集B具有一对一联系。

  举个梨子:一般来说,一个班级只有一个正班长,且一个班长只在一个班中任职,所以我们说班长和班级之间具有一对一联系。

(2)一对多联系(1:n):

  实体集A中每一个实体,实体集B中有n个实体(n? ≥ 0)与之联系,反之,B中的每一个实体,实体集A中至多只有一个与之联系,则称实体集A与实体集B具有一对多联系。

  举个苹果:一般来说,一个班级中有若干个学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多的联系。

(3)多对多联系(m:n):

  因该不难推测,多对多就是实体集A中每一个实体,在实体集B中有n(n ?≥ 0)个与之联系,反正实体集B中每一个实体,A中也有m(m ?≥ 0)个实体与之联系。我们则称A与B具有多对多联系。

  举个香蕉:一门课程同时有若干个学生选修,一个学生一次可以选择若干门课程,所以课程与学生之间的联系属于多对多的联系。

然后是单个实体型内的联系:

  我们首先要知道,单个实体型之间也是存在一对一,一对多和多对多的联系的。例如职工实体型就有领导和被领导的联系,一般来说这是一种一对多的联系,一名领导领导多名员工,多名员工被一个领导领导。

  在我们实际生活中,更多的是多个实体集之间的联系,由于可以存在多个实体集之间有着共同的关系,所以当我们要描述的问题比较大的时候,很难用语言来描述其中的关系,我们需要一种能够简化这种关系,让我们简单清楚的发现其中的关系的一种方法,所以才有了E-R图。

要画E-R图,我们要先知道E-R由什么组成

E-R图的组成很简单,就四个:

矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
然后我们就可以画了,以上面举的例子为例:
两个实体(1:1):技术分享图片 两个实体(1:n):技术分享图片两个实体(n:m):技术分享图片

 

 三个实体之间:技术分享图片单个实体之间一对多实例:技术分享图片

这就是简单的E-R图。

 

接下来我们动手分析几个题目,试着去画他们的E-R图。

例1:学校中有若干个系,每个系有若干个班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生,每个班有若干学生,每个学生选修若干课程,没门课程可由若干学生选修。请画出此学校的E-R图。

  首先我们要找到所有的名词:学校、系、班级、教研室、教员、教授、副教授、研究生、学生、课程。

  接下来就是按照上面说的基本概念找到所有的实体

    学校属于实体,系、班级、教研室、课程这些是实体大家应该没有疑问,但是其他的教员、教授、副教授、研究生、学生之间究竟是不是各自都是一个实体就不一定了。我们先分析一下他们的关系,首先我们要清楚,学生和研究生其实是两个不同的实体,既然分开了研究生和学生,而我们这里说的教员就是研究生,教授和副教授都属于教授这一实体,不用分开。所以最终这几个其实只是教授、学生、研究生。

  了解了所有实体后,开始找他们的关系了。

  首先学校只与系有关,如果懒得给关系命名的话我们直接用他们的名字关联命名,并且一个学校对应多个系,一个系只能属于一个学校(这里只争对一个学校的所有系,与其他学校无关),所以学校和系的关系是:校-系(1:n);

  通过题目可知系下面分为班级和研究室,一个系下面有多个教研室,是所属关系:属于(1:n),同理班级也是:属于(1:n)关系,他们都只能属于一个系;

  一个教研室里面由多个教授组成,一个教授只能在一个教研室,所以是:组成(1:n)

  一个教授可以指导多名学生,一名学生只能有一个教授,所以是:指导(1:n)

  一个班级由多个学生组成,一个学生只能属于一个班,所以是:组成(1:n)

  一个学生可以修很多门课程,一个课程可以有多个学生选,所以是:选修(m:n)

综上可以画出如下的E-R图(由于这里没有涉及到属性,所以不用考虑):

  技术分享图片

 

 

例2:某工厂生产若干产品,每种产品由不同零件组成,有的零件可用在不同产品上。这些零件由不同的原材料制成,不同零件所有的材料可以相同。这些零件按所属的不同产品分别放在不同的仓库中,原材料按照类别放在若干仓库。请用E-R图画出上述的概念模型。

  同上题,我们先找出所有的名词:工厂、产品、零件、原材料、仓库。

  然后分析找出实体,发现他们并没有交叉关系,与上体不同,不会造成误解。

  然后我们分析关系:

  一个工厂可以生产若干产品,一个产品只能由这个工厂产生,所以是:生产(1:n)

  一个产品由多个零件组成,一个零件可以用在不同产品上,所以是:组成(m:n)

  一个零件由多种材料制造,一种材料可以去制造不同的零件,所以是:制造(m:n)

  不同的零件放在不同的仓库,所以是:储存(m:n)

  原材料是按照类别来放在仓库的,所以不同的材料可以放在同一个仓库,但是一个仓库只能放一类原材料,所以是:存放(n:1)

  这里还是没有提到实体的属性,所以E-R图为:

技术分享图片

 

最后总结一下吧:

  首先要找到所有的名词,然后去掉具有相同含义的词,还有就是确认两个是不是同一实体,如果是的话就保留一个,如果不是就千万不能合在一起;

  然后就是从一个实体出发,分析与他有关的其他实体,像网一样慢慢展开,注意分析考察每一对究竟是三种当中的哪一种;

  对于不同实体连接到统一实体的,如果可以合并的就合并;

  最后,我们可以暂时不用管实体的属性,在其他地方将实体的属性单独画出来,因为有时候实体属性太多,如果全部花在图上的话会反而变得“难看”。

内容参考自:数据库系统概论(第四版)

欢迎各位指出错误:2805420128@qq.com

 

 

 

 

  

  

E-R图简介

原文:https://www.cnblogs.com/Feq1007/p/9687270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!