ERD 就是 Entity-Relationship Diagram(实体-关系图) 的缩写。它是你数据库结构的可视化图,能直观地展示实体(表)之间是怎么关联的。
你可以把ERD想象成数据库的地铁线路图。每个站点就是一张表,站点之间的连线就是表之间的关系。这张图能帮你搞清楚怎么在表之间“换乘”(也就是表之间怎么交互)。
ERD包含:
- 实体:就是对象或者表,比如“学生”、“课程”、“老师”。
- 属性:就是表里的列,比如
ID、名字、姓氏。 - 关系:就是表之间的连线,表示它们之间的联系,比如一个学生可以选很多课程。
有了ERD,你不仅能规划数据库,还能给同事或者老板展示你的设计思路。对开发者来说,这绝对是个神器!
ERD的基本元素
- 实体
实体就像是一个小型数据库。每个实体对应你系统里想要管理的真实对象或概念。比如:
- 表“学生”。
- 表“课程”。
- 表“借阅”(在图书馆系统里)。
举个例子:
+---------------+
| 学生 |
+---------------+
| ID |
| 名字 |
| 姓氏 |
| 出生日期 |
+---------------+
- 属性 属性就是实体的具体特征或描述。它们在数据库表里就是列。比如:
- 对于“学生”表,可以有
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步:实体
- 用户:
用户ID、名字、Email。 - 商品:
商品ID、名称、价格。 - 订单:
订单ID、用户ID、下单日期。
第2步:建立关系
- 一个用户可以下多个订单(1:N)。
- 一个订单可以包含多个商品(M:N)。
完整ERD图:
[用户] ----(1:N)---- [订单] ----(N:M)---- [商品]
要实现多对多关系,需要加一张中间表:
- 订单明细:
订单ID、商品ID、数量。
ERD绘制小贴士
先想清楚你想在数据库里看到什么。一切都要从理解你的业务领域开始。
只加真正重要的属性和实体。太细会让人晕。
确保所有关系都合乎逻辑。如果觉得哪条关系怪怪的,就再想想。
用工具画图,能省不少事儿。
GO TO FULL VERSION