跳到主要内容

数据库设计 - 绘制 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 图例子,表示以下场景:

“一个学生有学号、姓名和班级;一个课程有编号和名称;学生可以选修多门课程。”

这个图展示了:

  • 两个实体:STUDENTCOURSE
  • 一个多对多关系:通过中间表 STUDENT_COURSE 实现;
  • 属性清晰标注,主键用 PK,外键用 FK 表示。

如果你用图形工具画的话,可以这样理解:

  • 矩形代表实体;
  • 椭圆形代表属性(带下划线表示主键);
  • 菱形代表关系,连接两个实体;
  • 箭头标注基数(1、N 等)。

小结

在本节中,你学习了:

  1. ER 图是数据库设计中用于描述实体及其关系的图形工具;
  2. 它由实体、属性、关系三部分组成;
  3. 绘制 ER 图的步骤包括识别实体、属性、关系,然后用图形方式表达出来;
  4. 通过 Mermaid 或其他工具,你可以方便地创建标准的 ER 图。

掌握 ER 图的绘制,你就能更清晰地组织数据结构,为接下来的表结构设计打下坚实基础。下一节,我们将讲解如何将 ER 图转换为关系模型,正式进入逻辑设计阶段。