这个模板适合做什么
这个 ER 图模板帮你把任何关系型数据库的实体、属性和关联关系画清楚。无论是在写迁移脚本之前设计新的 schema、向干系人说明数据模型,还是为新成员文档化现有数据库,ER 图都能让外键和关联条件一目了然——远比直接读 schema dump 或询问原始开发者更快。
适用场景
- 在写第一个迁移文件之前,设计新应用的数据库 schema。
- 为现有生产数据库制作文档,帮助新工程师理解数据模型。
- 向技术负责人或架构师说明 schema 变更方案,供审查。
- 调试慢查询或缺失关联时,梳理各表之间的关系。
- 规划多租户 SaaS 的 schema,明确画出租户隔离边界。
- 为电商系统建模,覆盖商品、订单、用户和库存表。
使用步骤
- 1识别主要实体——系统需要存储的对象,比如用户、订单或商品。
- 2列出每个实体的关键属性,标注主键。
- 3在有关联的实体之间画线,标注关系动词(下单、包含、属于)。
- 4给每条关系标注基数:一对一、一对多或多对多。
- 5多对多关系需要增加关联表,有自己的主键和两个外键。
简单示例
电商 ER 图
和相似工具的对比
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


