数据库与 SQL 工具

SQL 转 ER 图只呈现已声明的关系

从建表语句查看关系图、字段与约束。先选择输入所用方言,再核对结果和未解析的引用目标。

SQL 转 ER 图

SQL DDL 输入

结构查看结果

输入 SQL 或选择示例。

内容仅在浏览器本地处理,不连接数据库,也不保存历史。

方言与解释规则

仅接受 CREATE TABLE 和普通列 CREATE INDEX。连线来自显式外键,不执行 SQL。

最多 50,000 个 UTF-16 单元、50 张表、1,000 列;键、索引、CHECK 与外键合计最多 200 项。字段每批显示 50 项。

TypeScript 描述读取行:大整数与精确小数使用 string,未知类型和 SQLite 列使用 unknown。请核对驱动的返回约定。

结果已过期,请处理当前输入后再导出。

SQL 转 ER 图适合在评审建表脚本时快速梳理依赖:你可能只拿到一段迁移文件,没有数据库连接,也不清楚复合主键由哪些列组成。结构查看应帮助核对这些声明,而不是替应用补出业务规则。

示例包含两张表、可空列、唯一键、普通索引与精确小数。先对照图和字段清单,再替换成自己的 DDL;名为 customer_id 的字段本身不会产生外键关系。

SQL 转 ER 图如何帮助核对结构

把能从脚本确认的关系与缺失的信息放在同一处。

只连真正声明的外键

SQL 转 ER 图会连接存在外键声明的两张表,保留无关表的独立状态。输入缺少被引用表时,图中用虚线节点标明外部目标,避免把一段局部结构误看成完整数据库。

三张表卡片中只有两张由显式引用连接,第三张独立。

结构、图和类型采用同一份结果

关系图便于理解依赖,JSON 便于记录结构,TypeScript 便于起草读取行类型。三种输出共享一次分析结果,切换视图不会悄悄改变 SQL 的解释。

一个表定义分别形成关系图、结构树和类型文档。

导出之前值得核对的三件事

01

方言必须与源脚本一致

选择器决定语法和名称匹配方式,并不会将 SQL 翻译成另一种方言。MySQL 外键须使用独立 FOREIGN KEY,另两种方言也支持列级引用。

  • 修改方言后,旧结果立即禁止复制和下载,直到新分析成功。
02

检查未解析目标计数

输入可能只有局部 schema。查看虚线节点的目标表与目标字段,再判断是否需要补入缺失的建表语句,不能只看图中有多少条箭头。

  • 不带 schema 的引用只匹配同样不带 schema 的表,不模拟服务器 search_path。
03

区分读取行与写入参数

默认值不会让属性变成可选项。已知可空类型带有 null 联合;大整数与精确小数映射为 string,仍需核对所用数据库驱动。

  • 关闭自动分析后,可以点击主按钮,或按 Ctrl/Cmd + Enter。

从表定义到可复用的结构信息

三种方言的数据库结构查看

按 MySQL、PostgreSQL 或 SQLite 解析受支持的 DDL 子集。保留引号名称和限定表名,PostgreSQL 未加引号的名称按规则折为小写,避免把不同对象混在一起。

复合键按一组展示

主键和唯一键保存有序字段列表;复合外键同时保留来源与目标字段的对应关系。桥接表仍然是表,不会被折叠成工具猜测的多对多业务关系。

字段表保留核对依据

可查看原始类型、可空性和主键标记,展开字段原文核对 DEFAULT、CHECK 或生成列条款。普通显式索引保留列顺序及升降序,不把复合键的每列当成独立唯一列。

结构 JSON 便于后续脚本使用

导出包含表身份、字段、键、索引、检查与外键目标,未解析引用也会留下记录。这是一份结构清单,不是 JSON Schema,更不能代替数据库验证。

保守的 TypeScript 类型草稿

接口采用安全编号,属性名称使用引号。时间类型使用 string,二进制使用 Uint8Array,JSON 和未知类型使用 unknown。类型代码用于读取行形状,不自动生成 ORM 或写入 DTO。

建表语句生成 ER 图并保存

实体关系图支持 SVG 下载,卡片预览前五个字段,长名称可缩略。字段视图与 JSON 始终保留完整清单,适合在文档评审中同时提供概览和可复核细节。

接受的输入与明确边界

只读取受支持的建表及建索引语句
接受 CREATE TABLE 和基于具名列的 CREATE INDEX。ALTER、INSERT、视图、触发器、存储过程及 CREATE TABLE AS/LIKE 会让整批失败;函数、表达式、前缀和部分索引也明确拒绝,不会悄悄省略。
不猜隐含关系或业务基数
字段名带有 _id 不会自动连线。图只反映声明,不验证目标是否满足数据库全部唯一性规则,也不能证明存储引擎强制执行外键。缺失的业务约束应回到 DDL 中补充。
名称匹配不等同服务器配置
PostgreSQL 的未引号名称折小写,引号名称保留大小写;MySQL 表名精确匹配、列名不区分大小写;SQLite 的 ASCII 名称匹配不区分大小写。不补 schema,也不模拟 search_path。
MySQL 列级引用不作为外键
MySQL 会解析却忽略字段上的 REFERENCES。这里要求改写为独立 FOREIGN KEY,避免把被忽略的语法画成有效关系。即使是表级声明,也不能据此判断实际引擎是否执行约束。
SQLite 可空性和类型单独解释
普通非 INTEGER 主键可能允许 NULL;INTEGER 主键及受支持的 WITHOUT ROWID 定义按相应非空规则处理。SQLite 采用动态类型,全部读取行属性导出为 unknown,不承诺实际存储值的类型。
数量超限时整批拒绝
单次最多 50,000 个 UTF-16 单元、50 张表、1,000 列,键、显式索引、保留的检查与外键合计最多 200 项;另外限制 15,000 个 token、32 层括号和 250 条语句。大结构请按业务范围拆分。
结果是只读视图
不执行 DEFAULT 或 CHECK,不连接数据库,不导入文件,不保存云端项目,不通过 AI 补设计,也不提供拖图改表、迁移生成或 PNG/DBML 导出。TypeScript 不具备运行时校验能力,请核对驱动映射。

SQL 转 ER 图常见问题

SQL 转 ER 图支持哪些数据库语法?

可以选择 MySQL、PostgreSQL 和 SQLite。支持范围是解析器可识别的 CREATE TABLE 与普通列 CREATE INDEX 子集,并非每个数据库版本的全部 DDL;遇到报错时先核对方言,再查看提示行列。

ER 图生成失败怎么办?

先确认输入是完整建表语句,而不是表名列表或自然语言。根据错误行列检查括号、引号和约束;如果包含 ALTER、数据插入或复杂索引,先整理为支持的结构定义。任何错误都会阻止整批导出。

多张表之间的复杂关系如何显示?

复合主键、唯一键和外键都保留字段顺序。多张表之间仅按显式外键画箭头,桥接表和自引用不会被推断为额外业务关系;图中只预览部分字段,完整内容在字段视图和 JSON 中。

生成的 ER 图为什么没有连线?

请检查源文本是否声明了 FOREIGN KEY。字段名称相似、同为 id 或以 _id 结尾都不构成约束证据;MySQL 的列级 REFERENCES 也不会被当成有效外键,需要使用独立约束。

自引用外键能在图中显示吗?

支持。外键目标为当前表时保留自引用连线,来源列和目标列仍可在关系列表中核对。工具只显示声明,不会根据树形业务猜测根节点、层级深度或是否存在数据循环。

发现排版问题?

检查下一份建表脚本

把一段完整 DDL 放入 SQL 转 ER 图,先核对键与未解析目标,再将图和结构用于文档。

修改结构请编辑源 DDL,导出结果不会反向覆盖输入。