陈氏ER图在线编辑
可视化拖拽式数据库实体关系图编辑器,支持导出 DDL SQL 脚本
拖拽到画布
数据表
字段类型
VARCHAR
INT / BIGINT
DECIMAL
DATETIME
TEXT
BOOLEAN
FLOAT
DATE
INT / BIGINT
DECIMAL
DATETIME
TEXT
BOOLEAN
FLOAT
DATE
快捷键
Del:删除选中
Ctrl+Z:撤销
Ctrl+Y:重做
Ctrl+S:保存
滚轮:缩放
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 方言差异
| 特性 | MySQL | PostgreSQL | SQL Server | SQLite |
|---|---|---|---|---|
| 自增主键 | AUTO_INCREMENT | SERIAL / GENERATED | IDENTITY(1,1) | AUTOINCREMENT |
| 字符串类型 | VARCHAR(n) | VARCHAR(n) | NVARCHAR(n) | TEXT |
| 布尔类型 | TINYINT(1) | BOOLEAN | BIT | INTEGER |
| 表注释 | COMMENT '...' | COMMENT ON TABLE | 扩展属性 | 不支持 |