E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
模型历史
ER模型最早由Peter Chen(陈品山)于1976年提出,它在数据库设计领域得到了广泛的认同,但很少用作实际数据库管理系统的数据模型。即使对SXL-92数据库来说,设计好的数据库也是具有挑战性的。
大部分数据库设计产品使用实体-联系模型(ER模型)帮助用户进行数据库设计。ER数据库设计工具提供了一个“方框与箭头”的绘图工具,帮助用户建立ER图来描绘数据。
实体联系模型,实体关系模型或实体联系模式图(ERD)是由美籍华裔计算机科学家陈品山(Peter Chen)发明,是概念数据模型的高层描述所使用的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号。这种数据模型典型的用在信息系统设计的第一阶段;比如它们在需求分析阶段用来描述信息需求和/或要存储在数据库中的信息的类型。但是数据建模技术可以用来描述特定论域(就是感兴趣的区域)的任何本体(就是对使用的术语和它们的联系的概述和分类)。在基于数据库的信息系统设计的情况下,在后面的阶段(通常叫做逻辑设计),概念模型要映射到逻辑模型如关系模型上;它依次要在物理设计期间映射到物理模型上。注意,有时这两个阶段被一起称为"物理设计"
E-R 三要素
| 名称 | 作用 | 描述符号 | 举例 |
|---|---|---|---|
| 实体 | 客观上可以相互区分的事物就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系。关键在于一个实体能与另一个实体相区别,具有相同属性的实体具有相同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体。 | 学生,课程 | |
| 联系 | 信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。 | 学生选修课程 | |
| 属性 | 一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。 | 学生的姓名,学号,性别 |
三要素通过一条无向边连接,是一个无向图。
注意:
- 联系不能脱离实体,必须有实体连接且可以是实体的自身联系
- 属性既可以连接实体,也可以连接联系。但一个属性只能有唯一的连接对象。
实体-联系 三种情况
一对一联系(1:1)
对于两个实体集A和B,若A中的每一个值在B中至多有一个实体值与之对应,反之亦然,则称实体集A和B具有一对一的联系。
例如:一个学校只有一个正校长,而一个校长只在一个学校中任职,则学校与校长之间具有一对一联系。
graph LR
school[学校] -- 1 --- serveAs{担任} -- 1 --- principal[校长]
一对多联系(1:N)
对于两个实体集A和B,若A中的每一个值在B中有多个实体值与之对应,反之B中每一个实体值在A中至多有一个实体值与之对应,则称实体集A和B具有一对多的联系。
例如:一个学校里有多名教师,而每个教师只能在一个学校教学。
graph LR
school[学校] -- 1 --- teaching{教学} -- n --- teacher[教师]
多对多联系(M:N)
对于两个实体集A和B,若A中每一个实体值在B中有多个实体值与之对应,反之亦然,则称实体集A与实体集B具有多对多联系
例如:一个学生可以上n种课程,而每一个课程可以有m个学生学习。而上课还可以有一个属性:上课时间。
graph LR
student[学生] -- m --- attendClass{上课} -- n --- course[教师]
attendClass --- time((上课时间))
弱实体
弱实体(weak entity)是一种数据库系统术语。其定义为一个实体对于另一个实体(一般为强实体,也可以是依赖于其他强实体的弱实体)具有很强的依赖联系,而且该实体主键的一部分或全部从其强实体(或者对应的弱实体依赖的强实体)中获得,则称该实体为弱实体。
- 弱实体集A到弱实体集B必然是多对一联系。
- A应为B的主码提供自己的主码。 在E-R图中,用双边矩形来代表弱实体集,用双边菱形来代表弱实体集之间的联系。
作图步骤
- 确定所有的实体集合;
- 选择实体集应包含的属性;
- 确定实体集之间的联系;
- 确定实体集的关键字,用下划线在属性上表明关键字的属性组合;
- 确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型。
总结
- 尽量减少实体集数量,能作为属性时不要作为实体集。
- “属性”不能再具有需要描述的性质。必须时不可分割的数据项。不能时其他属性的聚集。
- “属性”不能与其他实体具有联系
- 综合局部
E-R图,产生出总体E-R图。在这个过程中,同名实体只能出现一次,并去掉不必要的联系,以便消除冗余。一般的,能够根据总体E-R图导出各个局部的E-R图。