CodeGym /课程 /SQL SELF /创建ERD(实体-关系图)

创建ERD(实体-关系图)

SQL SELF
第 26 级, 课程 1
可用

ERD 就是 Entity-Relationship Diagram(实体-关系图) 的缩写。它是你数据库结构的可视化图,能直观地展示实体(表)之间是怎么关联的。

你可以把ERD想象成数据库的地铁线路图。每个站点就是一张表,站点之间的连线就是表之间的关系。这张图能帮你搞清楚怎么在表之间“换乘”(也就是表之间怎么交互)。

ERD包含:

  • 实体:就是对象或者表,比如“学生”、“课程”、“老师”。
  • 属性:就是表里的列,比如 ID、名字、姓氏。
  • 关系:就是表之间的连线,表示它们之间的联系,比如一个学生可以选很多课程。

有了ERD,你不仅能规划数据库,还能给同事或者老板展示你的设计思路。对开发者来说,这绝对是个神器!

ERD的基本元素

  1. 实体

实体就像是一个小型数据库。每个实体对应你系统里想要管理的真实对象或概念。比如:

  • 表“学生”。
  • 表“课程”。
  • 表“借阅”(在图书馆系统里)。

举个例子:


+---------------+
| 学生          |
+---------------+
| ID            |
| 名字          |
| 姓氏          |
| 出生日期      |
+---------------+
  1. 属性 属性就是实体的具体特征或描述。它们在数据库表里就是列。比如:
  • 对于“学生”表,可以有 ID、名字、姓氏。
  • 对于“课程”表,有 课程ID、课程名称。

在ERD里,属性通常写在代表实体的矩形框里。

实体之间的关系

关系表示两个实体之间是怎么交互的。常见的关系类型有:

  • 一对一 (1:1):比如每个学生有一个唯一的证件。
  • 一对多 (1:N):比如一个老师可以教多门课程。
  • 多对多 (M:N):比如多个学生可以选修多门课程。

一对多关系的例子:

学生 (1) <----- 选修 -----> (N) 课程

在数据库里实现关系,通常会用到外键。

怎么画ERD?

下面一步步带你画ERD,还会举个图书馆的例子。

第1步:确定实体

你要把系统拆成几个主要对象。比如图书馆系统:

  • “图书”。
  • “读者”。
  • “借阅”。

举个例子:

+-------------+        +--------------+         +------------+
| 图书        |        | 读者         |         | 借阅       |
+-------------+        +--------------+         +------------+
| ID          |        | ID           |         | ID         |
| 书名        |        | 名字         |         | 读者       |
| 作者        |        | 姓氏         |         | 图书       |
| ISBN        |        | 出生日期     |         | 借阅日期   |
+-------------+        +--------------+         +------------+

第2步:加上属性

每个实体都要有关键属性。比如:

  • “图书”表要有 ID(主键)、书名、作者、ISBN。
  • “读者”表要有 ID、名字、姓氏。

第3步:建立关系

现在给实体之间加上关系:

  • “借阅”关联“图书”(一本书可以被借多次)。
  • “借阅”关联“读者”(一个读者可以借多本书)。

第4步:可视化

你可以用这些工具画ERD:

  • draw.io
  • dbdiagram.io
  • Lucidchart
  • Microsoft Visio

画出来大概是这样:

[读者] ----(1:N)---- [借阅] ----(N:1)---- [图书]

每个关系都可以加上数据类型和说明,比如:

  • 读者ID 在“借阅”表里关联“读者”表的主键。

举例:网店的ERD

网店的ERD一般要包含这些结构:

  1. 用户(注册客户)。
  2. 商品。
  3. 订单。

第1步:实体

  • 用户:用户ID、名字、Email。
  • 商品:商品ID、名称、价格。
  • 订单:订单ID、用户ID、下单日期。

第2步:建立关系

  • 一个用户可以下多个订单(1:N)。
  • 一个订单可以包含多个商品(M:N)。

完整ERD图:

[用户] ----(1:N)---- [订单] ----(N:M)---- [商品]

要实现多对多关系,需要加一张中间表:

  • 订单明细:订单ID、商品ID、数量。

ERD绘制小贴士

  • 先想清楚你想在数据库里看到什么。一切都要从理解你的业务领域开始。

  • 只加真正重要的属性和实体。太细会让人晕。

  • 确保所有关系都合乎逻辑。如果觉得哪条关系怪怪的,就再想想。

  • 用工具画图,能省不少事儿。

2
任务
SQL SELF, 第 26 级, 课程 1
已锁定
将表格转换为第二范式(2NF)
将表格转换为第二范式(2NF)
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION