全部模板

ER 图模板

可视化设计数据库结构,定义表、字段及实体间关系,在写 SQL 前先理清思路。

使用此模板

模板亮点

  • 含字段类型标注的表格块
  • 主键/外键快速标识
  • 表间关系连接线

这个模板适合做什么

这个 ER 图模板帮你把任何关系型数据库的实体、属性和关联关系画清楚。无论是在写迁移脚本之前设计新的 schema、向干系人说明数据模型,还是为新成员文档化现有数据库,ER 图都能让外键和关联条件一目了然——远比直接读 schema dump 或询问原始开发者更快。

适用场景

  • 在写第一个迁移文件之前,设计新应用的数据库 schema。
  • 为现有生产数据库制作文档,帮助新工程师理解数据模型。
  • 向技术负责人或架构师说明 schema 变更方案,供审查。
  • 调试慢查询或缺失关联时,梳理各表之间的关系。
  • 规划多租户 SaaS 的 schema,明确画出租户隔离边界。
  • 为电商系统建模,覆盖商品、订单、用户和库存表。

使用步骤

  1. 1识别主要实体——系统需要存储的对象,比如用户、订单或商品。
  2. 2列出每个实体的关键属性,标注主键。
  3. 3在有关联的实体之间画线,标注关系动词(下单、包含、属于)。
  4. 4给每条关系标注基数:一对一、一对多或多对多。
  5. 5多对多关系需要增加关联表,有自己的主键和两个外键。

简单示例

电商 ER 图

Customer(id, name, email)
| 1 下单 多 |
Order(id, customer_id, created_at, status)
| 1 包含 多 |
OrderItem(id, order_id, product_id, quantity, price)
| 多 引用 1 |
Product(id, name, price, stock)

和相似工具的对比

ER 图 vs UML 类图

ER 图建模数据——实体、属性、关系——直接对应到关系数据库的表。UML 类图建模软件——类、方法、继承、行为。设计数据库 schema 用 ER 图;设计面向对象代码用类图。同一个领域概念在两种图里都会出现,但关注点不同:数据结构 vs 代码结构。

ER 图 vs 数据流图

ER 图是静态的,描述数据是什么样、有什么关系。数据流图是动态的,描述数据如何在不同流程和存储之间流动。问「我们的数据结构是怎样的」用 ER 图;问「数据在系统里怎么流动」用数据流图。

Chen 表示法 vs Crow's foot 表示法

Chen 表示法用菱形画关系,显式标注基数(1、N、M),偏学术、较啰嗦。Crow's foot 表示法在连线末端用分叉符号表示基数(一、多、可选),更紧凑,是现代数据库工具的事实标准。选一种坚持用,混用是让读者迷糊最快的方式。

常见误区

  • 基数缺失或写错

    User 和 Order 之间画一条线却没标基数,读者无法判断一个用户对应一个订单还是多个订单。每条关系线两端都要标清楚基数。在上游搞错,下游表数据写进去之后再改成本极高。

  • 多对多关系不建中间表

    Student 和 Course 之间直接画一条多对多线,在关系数据库里根本无法落地,必须有一张中间表(比如 Enrollment)。在 ER 图里就把中间实体显式画出来——它通常还携带 enrollment_date 这种有意义的属性。

  • 把实体当属性写

    把 addresses 写成 User 的一个逗号分隔字符串字段,画图阶段能糊弄过去,量上来就崩。如果一个属性可能有多值、会变化、自带子属性(街道、城市、国家),就该提升成独立实体,跟 User 建立关系。

  • 忽略主键

    每个实体都需要主键(一般是 id)。主键缺失不是标注问题,是模型没想清楚。显式标出来,让读图的人知道唯一性约束在哪。

  • 一张图画完整个库

    超过 20-30 个实体的 ER 图基本没法读。按业务上下文或功能域拆:用户与认证一张图、订单与支付一张图等等。跨上下文的关系可以只引用实体名,不重复画所有属性。

常见问题

什么是 ER 图?+

实体-关系图(ER 图)是描述系统数据结构的可视化模型。它表示实体(存储数据的对象,比如 User、Order)、每个实体的属性、以及实体之间的关系(一对一、一对多、多对多)。它是设计和文档化关系数据库的标准工具。

ER 图有哪三个核心组件?+

实体(矩形——存储的对象)、属性(椭圆或实体内部的字段——对象的特征)、关系(连线或菱形——对象之间的关联)。关系线上的基数标记说明每个实体可以关联多少个对方。

ER 图里的「基数」是什么意思?+

基数描述一个实体的实例可以关联多少个另一个实体的实例。常见场景:一对一(一个 User 对应一个 Profile)、一对多(一个 User 有多个 Order)、多对多(Student 选 Course,Course 也有多个 Student)。不同表示法用不同符号在连线上标注。

怎么把 ER 图转成 SQL 表?+

每个实体变成一张表,每个属性变成一列,主键列加 NOT NULL UNIQUE 约束。一对多关系在「多」那一端加外键列。多对多关系需要一张中间表,分别有指向两端的外键。很多工具支持从 ER 图直接生成 SQL DDL。

概念 ER 图、逻辑 ER 图、物理 ER 图有什么区别?+

概念图是早期设计用的高层视图,只有实体和关系,没有属性和键。逻辑图加上属性、主外键,但不绑定具体数据库。物理图包含具体的数据类型、索引、约束,针对某个具体数据库引擎。现代项目大多直接从概念跳到物理,但大型系统区分这三层很有帮助。

可以免费在线画 ER 图吗?+

可以。打开 CodePic ER 图模板,把实体拖到画布上,在每个实体框里加属性,用 Crow's foot 基数符号画关系。可导出 PNG、SVG 或分享实时链接。无需注册。

在线开始编辑

在 CodePic 中打开模板后,替换示例节点,就能很快整理成自己的学习导图。

查看示例: /templates/erd/examples

更多推荐模板