面向软件工程师的
离线ER图工具

Schemity 是一款面向软件工程师的离线桌面ER图工具,支持 macOS、Windows 和 Linux。一次买断,无云端,无订阅。复杂的 schema 可以拆成一个个聚焦的上下文视图:结构只有一份,视角可以有很多个。所有图都以适合用 Git 管理的 JSON 文件保存,不会离开你的机器。

2 周试用期,全部功能解锁,无需信用卡。 查看全部平台

这是一张可以拖动和缩放的真实ER图,内容是在浏览器版 Schemity Lite 中打开的一个 PostgreSQL schema。桌面版还能连接正在运行的数据库,并把适合用 Git 管理的 JSON 文件存放在你自己的机器上。


功能

不挡在你面前的可视化建模

合理的默认值、拖拽就能建立的关系,还有一个不会挡在你面前的可视化编辑器。团队的时间应该花在读懂 schema 上,而不是和工具较劲。

智能关系

1:N、1:1、N:N 的关系,用拖拽就能建立。中间表自动生成,外键自动命名,不需要手动接线。

安全的迁移流程

每一次 schema 变更都要经过明确的迁移确认才会执行,数据库不会被意外改动。应用之前,可以先看清生成的ER图迁移 SQL 差异。

导入 SQL / DBML

可以导入 CREATE TABLE 语句、SQL 转储文件或 DBML 文件。Schemity 会自动建好实体、字段和关系,不需要连接数据库。也可以随时导出回 DBML。

快速原型

在想法消失之前,几秒钟把 schema 画出来。

可以自由调整的关系线

用自定义路径点和智能布线,把任意一条连线调成你要的走向。

把 CHECK 约束当作文档

带 IN 约束的字段会加下划线,允许的取值按一个键就能看到。

自定义实体颜色

给一个实体上色,从它出发的每一条关系线都会继承这个颜色。

复合唯一约束一目了然

复合唯一约束会显示成带名字、按颜色区分的徽标。

用标签页并列多个系统

同时打开多张图,每张图有自己独立的撤销历史。

把 schema 当成结构来建模

不只是 public,可以跨多个 PostgreSQL schema 建模。

AI 助手

自带密钥(BYOK)或本地 Ollama,你的 schema 不会经过我们的服务器。

工作流程

Schemity 如何工作 - 从数据库到文档化 schema 的三步

连接你的数据库,把它拆成一个个聚焦的上下文视图,然后放心地让 schema 继续演进。这一切都基于同一份事实来源。

1

连接、导入,或者从零开始

几秒钟就能从现有的 PostgreSQL 生成ER图,在桌面上可视化一个 MySQL schema,也可以从一张白纸开始。不用花几周手写文档,就能拿到 schema 的完整视觉全貌。所有数据都留在你的机器上。

Schemity 的连接管理器:工作区一列列出 demo、default、work、erd、suberd,旁边的图表一列混合了 127.0.0.1 上正在运行的 PostgreSQL 连接、一个 SQLite 文件路径、一个 Supabase 数据库,以及若干标记为 Offline ERD 的图,其中还能看到 MySQL 和 SQL Server 的图标
正在运行的 PostgreSQL、SQLite 文件、Supabase、MySQL、SQL Server,以及完全不接触数据库、标记为 Offline ERD 的图。
2

把它拆成上下文视图

把 50 张表缩到一个只有 10 张表的聚焦视图。按关注点各建一个上下文视图:认证、计费、分析。做完就可以直接用于审计、交接,或者带新成员上手。

Schemity 的上下文视图面板,叠在一张 67 个实体的 CMS 图上:Main 标记为 Active,下面是十二个命名视图,Auth、catalog、mission、account、localization、targeting、assistant、attribute、progress、config、speech、learning,每个都带一个彩色圆点,状态栏显示 Entities: 67、Relations: 101
Main 里的 67 个实体和 101 条关系,拆成十二个命名视图。Auth 视图只有 8 个实体。
3

放心地让 schema 演进

Schemity 会把你的ER图和正在运行的数据库做比对,直接生成需要的那条 SQL 迁移语句。ER图以纯 JSON 的形式存在你的仓库里,没有任何第三方服务器会看到你的 schema。

在画布上加了一个 address 字段之后弹出的 Schemity 迁移确认对话框:生成的语句是 ALTER TABLE users ADD COLUMN address TEXT NOT NULL DEFAULT,下面注明迁移会在事务中执行、出错时回滚,Apply SQL statement 按钮旁边还有一个 Cancel 按钮
在画布上加了一个字段,它生成的 ALTER TABLE 语句,以及 Apply 旁边的 Cancel 按钮。
上下文映射图

你的限界上下文之间是如何相互依赖的

上下文视图让你放大看 schema 的某一部分,上下文映射图让你缩小看全局:每个上下文变成一个节点,节点之间的箭头是从数据库里真实存在的外键推导出来的,所以这张图不会和 schema 脱节。

一个 CMS schema 的 Schemity 上下文映射图:每个限界上下文是一个节点,标着它的实体数量,learning 17 个实体、progress 7 个、localization 5 个、attribute 4 个、catalog 3 个、account 3 个;节点之间的箭头带有徽标,标出朝这个方向流动的外键条数,状态栏显示 Contexts: 12、Dependencies: 20
  • 每一条箭头都有计数。

    徽标会显示朝这个方向流动的外键有多少条,于是上下文之间的耦合是一个数字,而不是一种感觉。

  • 循环依赖会画成曲线。

    直线箭头是单向的;曲线意味着两个上下文互相依赖。

  • 双击就能看到真实的外键。

    来源字段、目标实体、约束名称。一条可疑的箭头会变成一份待修的列名清单。

  • 可以就架构直接问 AI。

    BYOK 助手能找出跨越多个上下文的间接循环,那是肉眼扫图永远看不出来的。

在 Schemity 中打开 learning 指向 account 的那条箭头:面板标题写着这条箭头之所以存在,是因为下列实体关系,下面列出通过 fk_trainees_member 从 trainees.member_id 指向 members、通过 fk_training_sessions_presenter 从 training_sessions.presenter_id 指向 members,以及另外三条带约束名称的 tenant_id 外键
双击任意一条箭头,它就会分解成下面支撑它的那些外键:来源字段、目标实体、约束名称。这里没有一样东西是手画的,所以这张图不会和 schema 脱节。

可以读一读上下文映射图的文档,或者更深入的从外键推导出 DDD 上下文映射图

有什么不同

Schemity 与其他ER图工具有什么不同

大多数ER图工具是跑在浏览器里的画图板。Schemity 是一个和它所描述的那个数据库真正连在一起的桌面工具,下面每一条差异,你都能在试用的头十分钟里自己验证。

它会读你的数据库,而且一直跟得上

浏览器ER图工具把 schema 当成你粘贴进去的文本,所以下一次迁移落地的那一刻,图就开始和现实脱节。Schemity 会打开一个真实连接读取 schema,并在你每次打开图的时候重新同步:实体保持你摆好的布局,被删掉的表消失,新增的表等着你放置。

多个视角,同一份事实来源

超过三十张表以后,一张画布就不再可读了,多数工具的答案是缩放和自动布局。Schemity 的答案是上下文视图:聚焦的子图,你可以随意摆放,而 schema 本身一动不动。再加上一张上下文映射图,用真实的外键画出它们之间的依赖。

这张图是你自己的文件

在多数工具里,图是厂商数据库里的一行记录,只要你还在付费就能拿到。Schemity 把纯 JSON 写进你自己选的文件夹,于是一次 schema 变更就是一份可以在 Pull Request 里评审的 diff:用你已经在用的那套工具做版本管理、开分支、回滚。

你只能画出数据库会接受的东西

多数画布允许你把任意一列连到任意一列,再从菜单里挑一个基数。在 Schemity 里,外键指向父实体的主键,基数由这个键的唯一性决定,参照动作按每条关系单独设置,重复的表名会被拒绝。所以看起来合法的图,就是合法的。

不经过我们的 AI 帮助

云端工具把 AI 做成按量计费的功能,为此要把你的 schema 送到它们自己的服务器。Schemity 的助手是自带密钥(bring-your-own-key):schema 直接发给你选定的服务商,走你自己的账号;如果你通过 Ollama 指向一个本地模型,它哪儿都不去

一次购买,不给你的模型装计量表

订阅制工具按席位收费,还限制你能建多少张表,这会悄悄改变你的设计方式。Schemity 是一次买断,对表、图、工作区和上下文视图的数量都没有上限,也就没有理由为了不超配额把两个实体并成一个

从某个具体的工具转过来?这里有实话实说的对比:ChartDBdbdiagram.ioDbSchemaDrawSQLLucidchart

安全

安全 - 你的 schema 不会离开你的机器

一个没有云端的ER图工具,意味着客户的 schema 永远不会接触第三方服务器。我们不存的东西,就不需要保护,你也不需要审计。适用于有 NDA 的项目、客户委托的工作,以及物理隔离的网络环境。

不存储个人数据

我们只存一个自动生成的设备 ID 和你所在的国家,用于许可证管理和区域支持。没有姓名,没有邮箱,没有使用行为追踪。没有任何能识别你的信息。

支付由 LemonSqueezy 处理

所有支付处理和账单都由 LemonSqueezy 负责。Schemity 不会看到、也不会存储你的支付信息。

天然贴近 SOC 2 与 ISO 27001

因为 Schemity 几乎什么都不存,它在设计上就满足了 SOC 2 和 ISO 27001 的大部分要求。你的ER图文件存在你自己的仓库里,不在我们的服务器上。

跨平台

在每个平台上都是原生应用

在所有主流操作系统上,都能拿到流畅的性能和原生的操作手感。

把 schema 设计在它该待的地方:你自己的机器上

一次买断。两周试用,全部功能解锁,无需信用卡。无论你买不买,画出来的图都是你的。