数据库设计 - 绘制 ER 图
在上一节中,你已经了解了数据库设计的整体流程。你知道在逻辑建模之前,通常要先绘制一张 ER 图(实体-关系图)。这一步虽然看起来像是在画图,但它其实是整个数据库结构设计中非常关键的一步。
本节将带你逐步理解什么是 ER 图,ER 图的构成要素,以及你如何亲手绘制一张清晰准确的 ER 图。我们还会通过具体例子带你实践,帮助你真正掌握这个技能。
什么是 ER 图?
ER 图,全称是 Entity-Relationship Diagram,中文叫做实体-关系图,它用于形象地表示系统中的数据实体(Entity)及它们之间的关系(Relationship)。
你可以把 ER 图看作数据库的“草图”,它不会涉及字段类型、索引、SQL 语句,而是帮助你在概念层面把握系统中的数据结构。
ER 图的基本构成
ER 图中最常见的元素有三种:
1. 实体(Entity)
- 实体是指系统中需要保存信息的“对象”或“事物”,比如:学生、课程、订单、商品。
- 实体通常用 矩形框 表示,名字写在框中。
2. 属性(Attribute)
- 属性是指实体拥有的具体信息或特征,比如学生的“姓名”、“学号”,课程的“课程名”、“学分”。
- 属性通常用 椭圆形 表示,通过连线连接到实体。
其中还有几种特殊属性:
- 主键属性:唯一标识一个实体的属性,通常在 ER 图中用 下划线 标注;
- 多值属性:一个实体可能拥有多个值的属性(例如一个人有多个电话号码),有时会用双椭圆表示;
- 复合属性:由多个部分组成的属性,比如“地址”包含“省/市/街道”等。
3. 关系(Relationship)
- 关系表示两个或多个实体之间的逻辑联系,比如:
- 学生“选修”课程;
- 订单“包含”商品。
- 关系通常用 菱形 表示,连接相关的实体。
此外,每个关系还可以有“基数”(即关联的数量关系):
- 一对一(1:1)
- 一对多(1:N)
- 多对多(M:N)
绘制 ER 图的步骤
步骤一:识别实体
从系统需求中找出“名词”,这些通常就是你的实体。例如:学生、课程、教师、班级、成绩。
步骤二:识别属性
为每个实体列出它需要保存的字段,例如学生有:学号、姓名、性别、出生日期、班级编号。
记得标出哪些是主键(如学号)、哪些是可选属性。
步骤 三:识别关系
思考实体之间的联系,比如学生选修课程,课程由教师讲授。然后确定每种关系的类型(一对一、一对多、多对多)。
步骤四:绘图
使用合适的图形工具,或者手绘出 ER 图。常见的绘图工具有:
- draw.io / diagrams.net
- Lucidchart
- dbdiagram.io(可用代码快速生成)
- Mermaid(适合嵌入 Markdown)
示例:学生选课系统 ER 图
下面我们使用 Mermaid 绘制一个简单的 ER 图例子,表示以下场景:
“一个学生有学号、姓名和班级;一个课程有编号和名称;学生可以选修多门课程。”
这个图展示了:
- 两个实体:
STUDENT
和COURSE
; - 一个多对多关系:通过中间表
STUDENT_COURSE
实现; - 属性清晰标注,主键用
PK
,外键用FK
表示。
如果你用图形工具画的话,可以这样理解:
- 矩形代表实体;
- 椭圆形代表属性(带下划线表示主键);
- 菱形代表关系,连接两个实体;
- 箭头标注基数(1、N 等)。
小结
在本节中,你学习了:
- ER 图是数据库设计中用于描述实体及其关系的图形工具;
- 它由实体、属性、关系三部分组成;
- 绘制 ER 图的步骤包括识别实体、属性、关系,然后用图形方式表达出来;
- 通过 Mermaid 或其他工具,你可以方便地创建标准的 ER 图。
掌握 ER 图的绘制,你就能更清晰地组织数据结构,为接下来的表结构设计打下坚实基础。下一节,我们将讲解如何将 ER 图转换为关系模型,正式进入逻辑设计阶段。