E-R 图,全称 实体-联系图(Entity-Relationship Diagram),是数据库设计中用于描述现实世界信息模型的图形化工具。
在数据库设计的概念结构设计阶段,E-R 图被广泛用来梳理业务需求,将复杂的业务逻辑抽象为不依赖于具体计算机系统和数据库管理系统(DBMS)的信息模型。
1. E-R 图的核心三大要素
构成 E-R 图的核心元素主要有三个:实体、属性和联系。在传统的 Chen 氏表示法中,它们分别用不同的图形来表示:
① 实体 (Entity) —— 用「矩形」表示
-
定义:客观存在并可相互区别的事物。可以是具体的人、事、物,也可以是抽象的概念。
-
举例:学生、教师、课程、订单。
② 属性 (Attribute) —— 用「椭圆形」表示
-
定义:实体或联系所具有的某种特性。一个实体通常由若干个属性来刻画。
-
举例:
-
“学生”实体的属性:学号、姓名、性别、出生日期。
-
其中,能够唯一标识实体的属性称为主码(Key),在椭圆内文字下方会画下划线(如 学号)。
-
③ 联系 (Relationship) —— 用「菱形」表示
-
定义:信息世界中实体集内部或实体集之间的关联关系。
-
举例:学生与课程之间的“选修”关系,教师与课程之间的“讲授”关系。
2. 实体之间的联系类型(映射基数)
在 E-R 图中,两个实体之间的联系通常分为以下三种类型:
| 联系类型 | 英文简称 | 解释 | 典型业务场景 |
|---|---|---|---|
| 一对一 | $1:1$ | A 实体集中的一个实体最多与 B 实体集中的一个实体相对应。 | 学校与校长:一所学校只有一个校长,一个人只能担任一所学校的校长。 |
| 一对多 | $1:N$ | A 实体集中的一个实体可以与 B 实体集中的多个实体相对应,但 B 中一个实体最多对应 A 中一个实体。 | 部门与员工:一个部门可以有多个员工,但一个员工只能属于一个部门。 |
| 多对多 | $M:N$ | A 实体集中的一个实体可以与 B 实体集中的多个实体相对应,反之亦然。 | 学生与课程:一个学生可以选修多门课程,一门课程也可以被多个学生选修。 |
3. 一个具体的 E-R 图示例
假设我们要为一个简单的电商系统设计概念模型,涉及“用户”、“订单”和“商品”三个实体:
-
用户(用户ID,姓名,手机号)
-
商品(商品ID,名称,价格)
-
订单(订单ID,下单时间)
实体间的联系:
-
用户与订单:一对多($1:N$)。一个用户可以下多笔订单,但一笔订单只能属于一个用户。
-
订单与商品:多对多($M:N$)。一笔订单可以包含多种商品,一种商品也可以出现在多笔订单中。在这个“包含”联系上,还可以记录属性,比如商品的“购买数量”。
4. E-R 图的作用与演进
-
沟通桥梁:它是产品经理、业务人员和后端开发人员之间的通用语言。在讨论需求时,看图比看密密麻麻的代码和表格要直观得多。
-
向关系模型转换:在进入逻辑结构设计阶段时,E-R 图会被转换为关系模型(即数据库中的表结构)。
-
一个实体通常转换为一张表。
-
$1:N$ 的联系通常通过在“多”的一端添加外键来解决。
-
$M:N$ 的联系通常需要转换成一张独立的中间关系表(如“订单详情表”)。
-
关联笔记
- 索引 — 表结构落地后常见的查询性能优化手段
- PostgreSQL — 关系型数据库实践载体
- 软件设计师/软件架构设计师/软件分析/架构风格与模式/微服务架构 — 复杂业务系统拆分后仍需要清晰的数据建模边界