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图(实体关系图,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 和 PostgreSQL COMMENT ON COLUMN 语法)
  • Mermaid ER 图:点击「复制Mermaid」获取源码,可直接粘贴到 GitHub / GitLab / Notion 等支持 Mermaid 的平台
  • 点击「下载SVG」保存矢量图,「下载PNG」保存位图(2x 高清),适合插入文档或分享
注意事项
  • SQL 解析支持 MySQL、PostgreSQL、SQL Server 及通用 SQL 语法,可通过工具栏「数据库类型」下拉切换方言
  • PostgreSQL 的 SERIALBIGSERIALGENERATED 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 年
符号风格矩形 + 菱形 + 椭圆纯矩形表格
交互性可拖拽、双击编辑静态渲染
适用场景教学、讲解、演示文档嵌入、代码仓库
导出格式SVGSVG + 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 复杂度,适当反规范化(冗余字段)可提升查询性能。