navicat 16 原生不支持合并多个模型文件为单个 er 图,因每个 .ndm 文件元数据独立隔离,跨模型拖表或复制粘贴均无效;可行方案是统一逆向导入至同一新模型,或导出 svg 后用 inkscape 拼接。

Navicat 16 原生不支持合并多个模型文件为单个 ER 图——它没有“导入模型”或“合并模型”功能,所有模型文件(.ndm)彼此完全隔离,无法在 UI 中叠加、嵌套或引用。
为什么直接拖表/复制粘贴会失败
你可能会尝试把一个模型里的表拖进另一个模型画布,或者右键复制表再粘贴——这在 Navicat 16 中无效:粘贴 菜单项始终灰色;拖拽操作仅限同一模型内移动,跨模型拖入会被静默忽略。根本原因是每个 .ndm 文件维护独立的元数据上下文(如字段 ID、关系 GUID、布局坐标),强行混用会导致校验失败或崩溃。
真正可行的两种路径
必须绕过“模型合并”,转而统一源头或统一输出:
- 若多个模型对应不同数据库:先用
逆向数据库到模型把它们全部导入到**同一个新模型文件**中(前提是这些库能被同一 Navicat 连接访问,且无命名冲突) - 若模型已分散且不可重导(如客户给的独立
.ndm):只能导出为 SVG/PNG 后用外部工具拼接——但注意:SVG保留矢量可缩放,PNG会模糊;推荐用 Inkscape(免费)手动对齐图层,而非截图拼接
导出前必须处理的布局陷阱
即使成功把所有表塞进一个模型,直接导出仍大概率丢失连线或字段:
- 务必先关闭
Auto Layout(View → Auto Layout 取消勾选),否则跨模块的外键连线会被强制拉直、截断 - 双击每张表 → “样式” → 勾选
显示字段注释,否则导出图里看不到status TINYINT COMMENT '0-待支付'这类关键语义 - 手动调整表位置,让主键列与外键列大致水平对齐(如
users.id和orders.user_id左侧对齐),刷新Refresh ER Diagram后连线才能锚定准确
最常被忽略的一点:Navicat 的“完整 ER 图”本质是单个画布的视觉呈现,不是逻辑聚合。如果你的多个模型代表物理隔离的库(比如分库分表),硬凑到一张图上反而会掩盖真实部署边界——此时更该用 Group 分组 + 注释说明,而不是追求视觉“完整”。











