ER图生成器
根据 SQL 建表语句生成实体关系图,支持可交互的传统陈氏 ER 图与 Mermaid 标准 ER 图
点击「生成」ER图查看结果
场景示例 — 点击「填入」自动切换方言、加载 SQL 并生成 ER 图
MySQL 电商系统
用户、分类、商品、订单、订单明细、评价(6 表,覆盖 ENUM、UNSIGNED、反引号、复合主键等)
PostgreSQL 项目管理
组织、用户、项目、里程碑、任务、任务分配(6 表,覆盖 SERIAL、UUID、JSONB、TEXT[] 等)
SQL Server HR 人事
部门、员工、职位、员工职位、请假、考勤(6 表,覆盖 IDENTITY、NVARCHAR(MAX)、方括号等)
通用 SQL 图书馆
出版社、作者、图书、图书作者、借阅(5 表,仅使用 SQL 标准语法,无方言关键字)
相关工具:
陈氏 ER 图在线编辑
关于 ER图生成器
- ER图(实体关系图,Entity-Relationship Diagram)用于可视化数据库表结构及表间关系,是数据库设计的重要文档
- 传统陈氏 ER 图(默认):实体用矩形、关系用菱形、属性用椭圆,支持节点拖拽、双击编辑,适合展示和讲解
- Mermaid ER 图:标准矩形表格样式,适合嵌入 Markdown 文档、README 或 Wiki,可导出 SVG 和 Mermaid 源码
- 工具自动识别
FOREIGN KEY ... REFERENCES声明,生成带关系连线的完整 ER 图
操作说明
- 粘贴一个或多个
CREATE TABLE语句,选择数据库类型和图表类型,点击「生成」或按 Ctrl+Enter - 工具栏右侧可切换数据库方言(MySQL / PostgreSQL / SQL Server / 通用),示例按钮会随之联动加载对应方言的示例 SQL
- 陈氏 ER 图:可拖拽节点调整布局;按住 Shift 拖拽可框选多个节点后批量移动;双击任意节点可在线编辑标签;点击右上角 进入全屏预览
- 表搜索:按 Ctrl+F 打开搜索框,输入表名关键词高亮定位,Enter 跳转下一个匹配
- 表过滤:表数量超过 5 张时,可勾选需要显示的表,只渲染选中的表及其关联关系
- 重置布局:拖拽后布局混乱时,点击「重置布局」恢复初始排列
- 布局算法:陈氏图支持三种布局 —「线性排列」(默认,等间距水平排列)、「树形布局」(按外键关系分层,父表在上子表在下)、「力导向布局」(自动分散节点,减少连线交叉)
- 显示注释:开启工具栏「注释」开关后,陈氏图属性椭圆和 Mermaid 字段行将显示 SQL 中的
COMMENT注释(支持 MySQL 行内 COMMENT 和 PostgreSQLCOMMENT ON COLUMN语法) - Mermaid ER 图:点击「复制Mermaid」获取源码,可直接粘贴到 GitHub / GitLab / Notion 等支持 Mermaid 的平台
- 点击「下载SVG」保存矢量图,「下载PNG」保存位图(2x 高清),适合插入文档或分享
注意事项
- SQL 解析支持 MySQL、PostgreSQL、SQL Server 及通用 SQL 语法,可通过工具栏「数据库类型」下拉切换方言
- PostgreSQL 的
SERIAL、BIGSERIAL、GENERATED ALWAYS AS IDENTITY均可正确识别 - SQL Server 的
IDENTITY(1,1)、NVARCHAR(MAX)、方括号表名[dbo].[Table]均可正确解析 - 外键关系需通过
FOREIGN KEY (col) REFERENCES table(col)显式声明才能自动识别,隐式约定不支持 - 字段注释支持 MySQL 行内
COMMENT '...'和 PostgreSQL 独立COMMENT ON COLUMN table.col IS '...'语法,开启「注释」开关后显示 - 陈氏 ER 图表数量较多(>8 张)时节点可能重叠,建议切换「树形布局」或「力导向布局」,或使用表过滤功能选择部分表显示
- 所有处理均在浏览器本地完成,不会上传任何数据
ER 图与数据库设计 知识详解
ER 图三要素:实体、属性、关系
| 要素 | 陈氏符号 | 含义 | 数据库对应 |
|---|---|---|---|
| 实体(Entity) | 矩形 □ | 现实世界中可独立存在的事物 | 数据库表 |
| 属性(Attribute) | 椭圆 ○ | 实体的特征或性质 | 表的字段/列 |
| 关系(Relationship) | 菱形 ◇ | 实体之间的联系 | 外键约束 |
| 主键属性 | 下划线椭圆 | 唯一标识实体的属性 | PRIMARY KEY |
基数关系(Cardinality):一对一、一对多、多对多
| 关系类型 | 符号 | 典型场景 | 实现方式 |
|---|---|---|---|
| 一对一(1:1) | ||--|| | 用户 ↔ 用户详情 | 外键 + UNIQUE 约束 |
| 一对多(1:N) | ||--o{ | 用户 → 订单 | 子表外键指向父表主键 |
| 多对多(M:N) | }o--o{ | 订单 ↔ 商品 | 中间关联表(如 order_items) |
本工具自动将 FOREIGN KEY 解析为一对多关系(}o--||),多对多需手动拆分为两个一对多。
两种图表风格对比
| 维度 | 传统陈氏 ER 图 | Mermaid ER 图 |
|---|---|---|
| 起源 | Peter Chen,1976 年提出 | Mermaid.js,2014 年 |
| 符号风格 | 矩形 + 菱形 + 椭圆 | 纯矩形表格 |
| 交互性 | 可拖拽、双击编辑 | 静态渲染 |
| 适用场景 | 教学、讲解、演示 | 文档嵌入、代码仓库 |
| 导出格式 | SVG | SVG + Mermaid 源码 |
| 平台支持 | 独立工具 | GitHub / GitLab / Notion / Obsidian |
外键约束 SQL 写法速查
工具支持以下两种外键写法,均可自动识别并生成关系连线:
-- 写法一:表级约束(推荐)
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 写法二:行内约束
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT REFERENCES users(id)
);
数据库规范化(Normal Form)简明速查
| 范式 | 核心要求 | 解决的问题 |
|---|---|---|
| 1NF | 每列原子性,不可再分 | 消除重复列、数组列 |
| 2NF | 非主键列完全依赖主键 | 消除部分函数依赖 |
| 3NF | 非主键列不依赖其他非主键列 | 消除传递函数依赖 |
| BCNF | 每个决定因素都是候选键 | 消除主键内部依赖 |
实际项目中通常满足 3NF 即可;过度规范化会增加 JOIN 复杂度,适当反规范化(冗余字段)可提升查询性能。