图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。E-R方法是“实体-联系方法”(Entity-Relationship Approach)的简称。它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。 编辑本段模型历史ER模型最早由Peter Chen于1976年提出,它在数据库设计领域得到了广泛的认同,但很少用作实际数据库管理系统的数据模型。即使对SXL-92数据库来说,设计好的数据库也是具有挑战性的。它们可以在许多关于数据库设计的文献中找到,比如Toby Teorsey 的著作(1994 )。大部分数据库设计产品使用实体-联系模型(ER模型)帮助用户进行数据库设计。ER数据库设计工具提供了一个“方框与箭头”的绘图工具,帮助用户建立ER图来描绘数据。实体联系模型,实体关系模型或实体联系模式图(ERD)是由美籍华裔计算机科学家陈品山(Peter Chen)发明,是概念数据模型的高层描述所使用的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号。这种数据模型典型的用在信息系统设计的第一阶段;比如它们在需求分析阶段用来描述信息需求和/或要存储在数据库中的信息的类型。但是数据建模技术可以用来描述特定论域(就是感兴趣的区域)的任何本体(就是对使用的术语和它们的联系的概述和分类)。在基于数据库的信息系统设计的情况下,在后面的阶段(通常叫做逻辑设计),概念模型要映射到逻辑模型如关系模型上;它依次要在物理设计期间映射到物理模型上。注意,有时这两个阶段被一起称为"物理设计"。编辑本段构图要素构成E-R图的基本要素是实体型、属性和联系,其表示方法为:·实体型(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三丰、学生李寻欢都是实体。如果是弱实体的话,在矩形外面再套实线矩形。·属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。如果是多值属性的话,再椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。·联系(Relationship):联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。如果是弱实体的联系则在菱形外面再套菱形。[2]联系可分为以下 3 种类型:(1) 一对一联系(1 ∶1) 例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。(2) 一对多联系(1 ∶N) 例如,某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教(3) 多对多联系(M ∶N) 例如,图1表示学生与课程间的联系(“学 ”)是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。联系也可能有属性。例如,学生“ 学” 某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“ 成绩” 既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的联系“ 学”的属性。编辑本段作图步骤⑴确定所有的实体集合⑵选择实体集应包含的属性⑶确定实体集之间的联系⑷确定实体集的关键字,用下划线在属性上表明关键字的属性组合⑸确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型编辑本段作图举例(1)以自底向上设计概念结构的方法为例,它通常分为两步:第一步:首先要根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分E-R图。第二步:集成局部视图。概念结构是对现实世界的一种抽象,一般有三种抽象:⑴分类( is member of )⑵聚集( is part of)⑶概括(is subset of )编辑本段成分在ER图中有如下四个成分: 矩形框:表示实体,在框中记入实体名。 菱形框:表示联系,在框中记入联系名。 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)[3]编辑本段设计步骤(一)调查分析⑴选择局部应用在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,用多层数据流图和数据字典描述了整个系统。设计分E-R图的第一步,就是要根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,让这组图中每一部分对应一个局部应用,我们即可以以这一层次的数据流图为出发点,设计分E-R图。一般而言,中层的数据流图能较好地反映系统中各局部应用的子系统组成,因此人们往往以中层数据流图作为设计分E-R图的依据⑵逐一设计分E-R图每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现就是要将这些数据从数据字典中抽取出来,参照数据流图,<1> 标定局部应用中的实体, <2> 实体的属性、标识实体的码,<3> 确定实体之间的联系及其类型(1:1、1:n、m:n)。<1> 标定局部应用中的实体现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。对象和实体之间是"is member of "的关系。例如在学校环境中,可以把张三、李四、王五等对象抽象为学生实体。对象类型的组成成分可以抽象为实体的属性。组成成分与对象类型之间是"is part of "的关系。例如学号、姓名、专业、年级等可以抽象为学生实体的属性。其中学号为标识学生实体的码。<2> 实体的属性、标识实体的码实际上实体与属性是相对而言的,很难有截然划分的界限。同一事物,在一种应用环境中作为"属性 ",在另一种应用环境中就必须作为"实体 "。一般说来,在给定的应用环境中:⑴属性不能再具有需要描述的性质。即属性必须是不可分的数据项。⑵属性不能与其他实体具有联系。联系只发生在实体之间。<3> 确定实体之间的联系及其类型(1:1、1:n、 m:n)。根据需求分析,要考察实体之间是否存在联系,有无多余联系(二)合并生成各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。1.属性冲突 (1) 属性域冲突,即属性值的类型、取值范围或取值集合不同。例如:属性“零件号”有的定义为字符型,有的为数值型。(2) 属性取值单位冲突。例如:属性“重量”有的以克为单位,有的以公斤为单位。2.命名冲突 (1) 同名异义。不同意义对象相同名称。(2) 异名同义(一义多名)。同意义对象不相同名称。“项目”和“课题”3.结构冲突(1) 同一对象在不同应用中具有不同的抽象。例如"课程 "在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。(2) 同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。(3) 实体之间的联系在不同局部视图中呈现不同的类型。例如实体E1与E2在局部应用A中是多对多联系,而在局部应用B中是一对多联系;又如在局部应用X中E1与E2发生联系,而在局部应用Y中E1、E2、E3三者之间有联系。解决方法是根据应用的语义对实体联系的类型进行综合或调整。(三)修改重构生成基本E-R图分E-R图经过合并生成的是初步E-R图。之所以称其为初步E-R图,是因为其中可能存在冗余的数据和冗余的实体间联系,即存在可由基本数据导出的数据和可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,因此得到初步E-R图后,还应当进一步检查E-R图中是否存在冗余,如果存在,应设法予以消除。修改、重构初步E-R图以消除冗余,主要采用分析方法。除此外,还可以用规范化理论来消除冗余。