Navicat ER图非协作工具,.mwb文件不支持实时共享或变更联动;成功讨论需导出SVG/PNG静态图+人工标注+业务说明,并以Git管理的DDL脚本和统一开发库为唯一源头。
Navicat 的 ER 图本身不是协作工具,它不支持实时共享、变更联动或评论交互。但如果你把 ER 图当作「业务逻辑的可视化草稿纸」来用,它能在需求讨论中快速暴露矛盾、收敛共识——前提是绕开它的设计局限,用对方法。
为什么直接打开 Navicat 的 .mwb 文件讨论业务逻辑会失败
团队成员双击打开你发过去的 .mwb 文件,发现外键连线消失、字段重叠、软删除字段毫无标识,甚至中文注释全变成方块——这不是文件损坏,是 navicat 渲染依赖本地字体、版本一致性、系统权限和元数据快照。更关键的是:.mwb 是结构快照,不是业务语义图。它不会告诉你「用户取消订单后积分是否返还」,也不会标注「优惠券过期时间由风控服务统一写入」。
把 ER 图当白板用:只导出、不共享源文件
真正能推动讨论的,是导出后的静态图(SVG/PNG)+ 显式标注 + 业务上下文说明。操作要点:
- 导出前手动调整布局:选中关键实体(如
orders、users、coupons),按Ctrl+Shift+L局部重排,避免自动布局把一对多关系压成直线 - 右键每张表 →
Table Properties→ 关闭Show Column Comments,防止字段框被冗长注释撑爆;人工在 SVG 上用文字工具加一句「deleted_at:软删除,业务层强制过滤」 - 导出为
SVG并勾选Embed Fonts;若发给非技术人员,另存一份高 DPIPNG(≥240 dpi),避免缩放后字迹糊成一片 - 禁止直接发
.mwb或截图——Mac 用户导出的图在 Windows 上打开可能错位,16.x 版本生成的图在 17.1 里加载会丢掉 JSON 字段定义
用 ER 图触发关键问题,而不是验证答案
ER 图的价值不在“画得准”,而在“画不下去”时暴露出的逻辑断点。例如:
- 当你试图连
payments到orders和refunds时,发现外键指向不唯一——立刻意识到支付凭证需支持多态,必须拆出payment_methods主表 - 画到
inventory_batches和purchase_orders之间想拉 1:1 线,但业务说“同一批次可分多次入库”——这时停笔,转去确认「批次号」到底是采购单维度还是库存物理单位维度 -
is_deleted字段在图中和其他布尔字段并列显示,没人质疑;但你手动标红并写上「此处影响所有下游统计口径」,马上有人跳出来说“那报表里的‘活跃用户数’得重新定义”
团队同步真正的源头只有一个:DDL 脚本 + 统一开发库
所有人必须基于同一份 schema.sql(Git 管理)和同一个开发数据库(带 SELECT + SHOW VIEW 权限)操作:
- 每次 DDL 变更(哪怕只是加个索引)后,执行
Tools → Analyze Database重新逆向生成 ER 图——图永远是结果,不是输入 - 禁止用 Navicat 的「正向工程」生成建表语句再执行:它常漏掉
CHARSET=utf8mb4、COLUMN_FORMAT=STORED、字段COMMENT,导致图与库实际不一致 - 团队用相同 Navicat 版本(建议 ≥17.0),老版本对 MySQL 8.0+ 的隐藏列、降序索引、角色权限视图支持不全,会导致分析时字段丢失
ALTER TABLE、以及当图里出现三个不同颜色的 status 字段时,有没有人当场打开 Git 历史查清它们分别属于哪次迭代。











