【免费下载链接】libredb-studio
One browser tab for PostgreSQL, MySQL, Oracle, SQL Server, MongoDB, Redis, SQLite, Couchbase, ClickHouse, Druid, DuckDB, Turso and more. An open-source SQL IDE with SSO, audit trail and AI-assisted queries MIT licensed, with nothing held back behind an enterprise wall.
LibreDB Studio 是一款开源 SQL IDE,本文带你走通它的数据库设计三件套:交互式 ER 图(Entity-Relationship Diagram)可视化、Schema 差异对比(Schema Diff),以及一键生成迁移 SQL(Migration SQL)。三者串成一条完整链路——看懂结构 → 发现变化 → 生成变更脚本,帮助新手和 DBA 在 PostgreSQL、MySQL、Oracle、SQL Server、SQLite、ClickHouse 等数十种数据库之间安全演进表结构。
为什么需要"ER 图 + Diff + 迁移 SQL"这条工作流
数据库表结构是持续演进的:开发环境加了列,生产环境落后了;测试库和生产库之间出现了漂移。传统做法是手写 DDL、手动核对两个库的表结构,费时且容易出错。LibreDB Studio 把这三件事做成了同一个界面里的连续动作:
| 步骤 | 解决的问题 | 对应功能 |
|---|---|---|
| ① 看结构 | 表太多、外键关系记不住 | 交互式 ER 图 |
| ② 找差异 | 两个库/两个时间点结构漂移 | Schema 快照与差异对比 |
| ③ 出脚本 | 手动写 ALTER 语句易出错 | 自动生成迁移 SQL |
第一步:打开交互式 ER 图,30 秒看懂表关系
连接好数据库后,在对象浏览器(左侧 Tables 树)中打开ERD视图即可。ER 图基于 React Flow 与 ELK.js 自动布局引擎构建,外键关系会直接渲染成连线:
从截图可以看到 8 张表和 6 条外键关系的自动布局效果。核心交互能力:
- 平移 / 缩放 / 拖拽:大 schema 也能自由导航,节点可以手动拖动到任意位置;
- 表搜索:左上角输入表名快速定位,支持筛选;
- Compact / Detail 模式:精简模式只看表名和关系,详细模式展开每列的字段名、类型与主键/外键标记;
- 导出 PNG / SVG:右上角一键导出,直接放进技术文档或汇报材料;
- MiniMap 小地图:右下角缩略图,快速定位当前视图。
💡 提示:ER 图会如实反映引擎能力——对于没有外键概念的搜索引擎(如 Elasticsearch),它会正常显示表(索引)节点但不画连线,而不是假装有关系。
ER 图组件源码位于 src/components/SchemaDiagram.tsx,布局与导出逻辑在 src/components/schema-diagram/ 目录下。
第二步:建立连接并准备 Schema 快照
开始对比之前,需要先有"对比的两侧"。在连接管理器中添加数据库连接(支持 PostgreSQL、MySQL、Oracle、SQL Server、SQLite、MongoDB、Redis、ClickHouse 等):
在Schema Diff视图中,对比对象有三种取法:
- 当前库实时结构 vs 快照:点击"Snapshot"为当前 schema 拍一张快照(可加备注,如"上线 v2.3 之前"),之后任何时刻都能和实时结构对比;
- 快照 vs 快照:时间线(Timeline)上选中任意两个历史节点,即可回放任意两个时间点的结构差异;
- 跨连接对比:Source 和 Target 分别选择两个不同连接,直接对比开发库与生产库、或 PostgreSQL 与 MySQL 同名结构的差异。
快照管理组件见 src/components/SnapshotTimeline.tsx。
第三步:Schema 差异对比——颜色即答案
对比完成后,差异按新增 / 删除 / 修改三类着色展示,每张表下列出列级变化。你可以在 SQL 编辑器里先验证目标表的当前状态(例如跑一条SELECT查看数据分布),再对照 diff 结果做判断:
对比引擎逐表、逐列计算差异,核心实现是 src/lib/schema-diff/diff-engine.ts,类型定义见 src/lib/schema-diff/types.ts。
第四步:一键生成迁移 SQL
这是整个工作流的高光时刻:在 diff 视图切换到SQL Migration面板,LibreDB Studio 会依据差异自动生成可审阅的 DDL 脚本,无需手写一条ALTER TABLE。
- 支持的方言:PostgreSQL、MySQL、SQLite、Oracle、SQL Server 的完整表级 DDL,以及 ClickHouse 的列修改;
- 方言细节自动处理:SQL Server 的迁移会包在
BEGIN TRANSACTION/COMMIT中,Oracle 因 DDL 隐式提交而不包事务,Oracle 与 Db2 的删除语句使用无条件形式以避免依赖特定版本对IF EXISTS的支持; - 顺序正确:外键与索引的删除先于列变更执行,允许在同一张表中删除索引列后复用索引名;
- 诚实的边界:对不支持关系型 DDL 的引擎(MongoDB、Redis、S3 等),生成的是解释性注释而非硬造 SQL,避免误导。
官方对该模块的完整方言行为说明见 docs/SCHEMA_DIFF.md。
生成器源码:src/lib/schema-diff/migration-generator.ts;前端交互逻辑:src/components/SchemaDiff.tsx。
⚠️ 重要提醒:生成的迁移脚本不是幂等脚本,且 diff 不携带外键约束名、schema 限定符或跨表依赖顺序。执行前务必审阅每一段 SQL,并在可丢弃的库上先演练一遍。
完整工作流小结
- ERD 视图:拖拽、搜索、导出 PNG/SVG,先看清当前表结构和外键关系;
- 拍快照:发布前、变更前提前为 schema 存档,时间线支持任意两点回放;
- Diff 对比:快照 vs 实时、快照 vs 快照、跨库对比三种姿势,差异三色标出;
- SQL Migration:一键生成带方言适配的迁移 DDL,审阅后执行。
相关文档与入口:
- 功能总览:docs/FEATURES.md
- 迁移 SQL 方言说明:docs/SCHEMA_DIFF.md
- 项目主文档:README.md
这条"看图 → 找差 → 出脚本"的闭环,让数据库设计变更从"手工核对 + 手写 DDL"变成了界面内的连续操作——这正是 LibreDB Studio 作为开源 SQL IDE 在团队协作中的实用价值所在。
【免费下载链接】libredb-studio
One browser tab for PostgreSQL, MySQL, Oracle, SQL Server, MongoDB, Redis, SQLite, Couchbase, ClickHouse, Druid, DuckDB, Turso and more. An open-source SQL IDE with SSO, audit trail and AI-assisted queries MIT licensed, with nothing held back behind an enterprise wall.
相关推荐
Karakeep 数据库迁移实战:基于 Drizzle ORM 的 Schema 演进、迁移生成与 Drizzle Studio 操作指南
Karakeep 数据库迁移实战:基于 Drizzle ORM 的 Schema 演进、迁移生成与 Drizzle Studio 操作指南 本篇技术指南聚焦当前
后端前端移动开发AI 应用知识管理全文检索MCP 服务DBDiff:自动化数据库差异对比与迁移工具
DBDiff:自动化数据库差异对比与迁移工具 在软件开发和维护过程中,数据库的版本控制和同步是一个不可忽视的环节。DBDiff,作为一款开源的自动化数据库差异对
Saleor 中规范生成 Django 数据库 Schema 迁移:makemigrations 完整工作流与拆分规则
Saleor 中规范生成 Django 数据库 Schema 迁移:makemigrations 完整工作流与拆分规则 导读 本文基于 Saleor 仓库的 .
后端电商
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考