陈氏ER图在线编辑

可视化拖拽式数据库实体关系图编辑器,支持导出 DDL SQL 脚本

0 张表
拖拽到画布
数据表

字段类型
VARCHAR
INT / BIGINT
DECIMAL
DATETIME
TEXT
BOOLEAN
FLOAT
DATE

快捷键
Del:删除选中
Ctrl+Z:撤销
Ctrl+Y:重做
Ctrl+S:保存
滚轮:缩放
从左侧拖拽「数据表」到此处,或点击「新建表」
场景示例 — 点击「填入」自动加载示例数据
电商系统
用户/商品/订单/订单明细,含外键关系
博客系统
文章/分类/标签/评论,含多对多中间表
RBAC 权限系统
用户/角色/权限/关联表
单表演示
快速演示字段增删改操作
关于陈氏ER图在线编辑
  • 可视化拖拽式数据库实体关系图(ER 图)编辑器,无需手写任何语法,直接在画布上操作
  • 适用于数据库建模、表结构设计、技术文档绘制等场景,支持导出可执行的 DDL SQL 脚本
  • 支持 MySQL、PostgreSQL、SQL Server、SQLite 四种数据库方言,一键切换导出格式
操作说明
  • 从左侧面板拖拽「数据表」到画布,或点击顶部「新建表」按钮创建表
  • 点击表右上角「编辑」按钮打开完整字段编辑器;拖拽表头可移动表的位置
  • 点击表底部「连线」按钮,再点击目标表建立关系;点击连线可编辑关系类型(1:1 / 1:N / M:N)和级联策略
  • 右下角 / % / + 按钮可缩小、还原视图、放大;点击百分比数字还原到 100% 并居中
  • 点击工具栏或右下角全屏按钮进入全屏绘图模式,再次点击或按 Esc 退出
  • 支持 Ctrl+Z 撤销、Ctrl+Y 重做、Delete 删除选中、Ctrl+S 手动保存
  • 鼠标滚轮缩放画布(25%~200%),拖拽空白区域平移画布
注意事项
  • 设计稿自动保存到浏览器 localStorage,清除浏览器数据会丢失,建议定期点击「导出 JSON」备份
  • 多对多(M:N)关系在导出 SQL 时会自动生成中间关联表
  • 所有操作均在浏览器本地完成,不会上传任何数据
  • 导出的 SQL 为标准 DDL,可直接在对应数据库客户端执行
数据库 ER 图知识详解
ER 图基础概念
概念说明示例
实体(Entity)现实世界中可区分的对象,对应数据库中的表用户、订单、商品
属性(Attribute)实体的特征,对应表中的字段(列)用户名、创建时间
主键(PK)唯一标识一条记录的字段,不可为空且不可重复id、user_id
外键(FK)引用另一张表主键的字段,用于建立表间关联order.user_id → user.id
唯一键(UK)该字段值在表中唯一,但可以为空(与主键区别)email、手机号
三种关系类型对比
关系类型说明实现方式示例
1:1 一对一 A 表一条记录对应 B 表最多一条记录 在任意一方添加外键(加唯一约束) 用户 ↔ 用户详情
1:N 一对多 A 表一条记录对应 B 表多条记录 在"多"的一方添加外键指向"一"的主键 用户 → 订单(一个用户多个订单)
M:N 多对多 A 表多条记录对应 B 表多条记录 创建中间关联表,各持一个外键 文章 ↔ 标签(一篇文章多个标签)
外键约束策略说明
策略删除父记录时适用场景
RESTRICT拒绝删除(有子记录时报错)默认推荐,防止误删
CASCADE同步删除所有子记录父子强依赖,如订单明细随订单删除
SET NULL将子记录外键字段置为 NULL软关联,如文章分类被删后文章保留
NO ACTION延迟检查(行为同 RESTRICT)事务内延迟约束检查场景
数据库范式简介(1NF / 2NF / 3NF)
  • 第一范式(1NF):每个字段的值必须是原子值(不可再分),不允许存储数组或嵌套结构
  • 第二范式(2NF):在满足 1NF 的基础上,非主键字段必须完全依赖于主键(消除部分依赖)
  • 第三范式(3NF):在满足 2NF 的基础上,非主键字段之间不能存在传递依赖(消除冗余)
实践建议:OLTP 系统通常遵循 3NF;数据仓库/报表场景可适当反范式化以提升查询性能。
各数据库 DDL 方言差异
特性MySQLPostgreSQLSQL ServerSQLite
自增主键AUTO_INCREMENTSERIAL / GENERATEDIDENTITY(1,1)AUTOINCREMENT
字符串类型VARCHAR(n)VARCHAR(n)NVARCHAR(n)TEXT
布尔类型TINYINT(1)BOOLEANBITINTEGER
表注释COMMENT '...'COMMENT ON TABLE扩展属性不支持