Shield Postgres 插件 v0.3.10 针对大规模数据库的 ER 图可读性进行了专项优化。当表数量达到上百张、外键关系错综复杂时,传统的 Grid 布局几乎无法使用。本次更新引入了 FK 关系层级布局、Focus 聚焦模式、表搜索 和 显示模式切换 四项核心改进,让即使是 142 张表、232 条外键的数据库,也能拥有清晰可读的 ER 图。
起因
昨天有用户反馈:他们的 xxxorg 数据库有 142 张表、232 条外键关系 ,打开 ER 图后"基本没救了,系统太复杂"、"密密麻麻"。

确实,在之前的版本里,面对这种规模的数据库,Grid 布局只能把表格按行排列,外键连线从上到下拉出一堆长线条,完全无法辨认哪根线连向哪张表。

放大之后更明显------线条层层叠叠,几乎不可能追踪任何一条外键关系:

"可视化就算了"------这不是我们想听到的话。所以 v0.3.10 围绕大规模数据库的 ER 图可读性做了几项重点优化。
优化一:FK 关系布局算法
这是本次最核心的改动。新增了 Relations(FK 关系层级) 布局模式:
- 以选中表为 Hub 中心,通过 BFS 按外键层级向外展开
- 左右交替排列子表,外键连线对齐到具体的 FK 列位置
- 当单列表过多时自动 多列溢出排列,避免纵向无限拉长
- 连线清晰标注方向,一眼看出主从关系
效果对比------同样的数据库,同样的表,切换到 Relations 布局后:

从"一团乱麻"变成了可读的树形结构,每一层关系都一目了然。
优化二:Focus 聚焦模式
142 张表即使布局再好,全部展示仍然信息过载。v0.3.10 引入了 Focus 聚焦模式:
- 双击任意表 即可进入聚焦模式
- 通过工具栏设置 关系深度(1-N 层),只展示与目标表在 N 度关系内的子集
- 聚焦子集自动使用 FK 布局重新排列,配合视口动画平滑过渡
- 按 Escape 或再次双击退出聚焦,恢复全局视图

对于大型数据库,这可能是最实用的功能:不用再在上百张表里找关系,直接锁定你关心的那张表,逐层展开。
优化三:表搜索
表太多找不到?Cmd+F(或点击搜索图标)打开搜索框:

- 支持 模糊匹配,输入部分表名即可定位
- 选中后视口自动 动画滚动 到目标表位置
- 搜索结果实时下拉,键盘上下选择、回车确认
再也不用在画布上肉眼扫描了。
优化四:显示模式
新增两种表卡片显示模式,进一步减少视觉噪音:
| 模式 | 说明 |
|---|---|
| Compact(默认) | 显示表名 + 列名,隐藏类型等详细信息 |
| Name Only | 只显示表名,最大限度压缩卡片面积 |
在 Name Only 模式下,142 张表也能在一屏内大致掌握全局拓扑。需要看细节时,单击展开任意表即可查看完整列信息。
总结

v0.3.10 的核心思路是:大规模数据库不是"不能可视化",而是需要更好的布局算法和交互方式。
| 优化项 | 解决的问题 |
|---|---|
| FK 关系布局 | 连线杂乱无章 → 层级清晰的树形结构 |
| Focus 聚焦模式 | 信息过载 → 按需查看 N 度关系子集 |
| 表搜索 | 找不到表 → Cmd+F 模糊搜索 + 视口定位 |
| 显示模式 | 卡片太大 → Compact / Name Only 压缩视觉 |
如果你也在管理几十上百张表的 PostgreSQL 数据库,欢迎试试新版本。
bash
# 通过 Shield CLI
shield plugin update postgres
# 或 Docker
docker pull fengyily/shield-postgres:latest
或者在 VS Code 扩展中搜索:Shield CLI Postgres
感谢反馈问题的用户,好的产品都是被真实场景逼出来的。
开源地址:https://github.com/fengyily/shield-cli
插件仓库:https://github.com/fengyily/shield-plugins
有问题或建议欢迎提 Issue。