Na vicat 目前不支持直接合并 .ncm 模型文件,通常需要通过导出 SQL → 手动去重与整合 → 导入新模型的方式完成;操作过程中还要特别注意保留 COMMENT、处理同名数据表冲突、开启关系线显示、补充注释信息以及调整模型布局。

Na vicat 本身无法直接合并多个 .ncm 模型文件——也就是说,你不能像导入多个 SQL 文件那样,把几个模型文件一次性“导入”或“叠加”到同一个模型中。整个合并过程都需要手动处理,本质上属于数据库结构整合,而不是简单的文件拼接。
为什么不能用“打开多个模型再复制粘贴”?
Na vicat 的模型编辑器(.ncm)并不支持在不同模型之间直接拖拽、复制数据表和关系。即使同时打开两个模型窗口,也无法把一个模型中的表直接拖到另一个模型里;查看右键菜单时,也找不到“复制表结构”或“导入对象”之类的功能入口。至于通过截图保存,或者先导出 SQL 再重新导入,看起来似乎能绕过去,实际上会丢失不少关键信息——例如关系线、布局、注释、样式等模型元数据都会缺失,最终保留下来的通常只有最基础的 DDL 结构。
真正可行的合并路径:导出 SQL → 手动去重 → 导入新模型
如果你想合并多个 Na vicat 模型文件,这基本是目前唯一相对可靠、且能尽量保留关键设计语义(如外键、索引、字段注释)的实用方法:
- 分别对每个
.ncm模型执行:右键 → “导出 SQL 脚本” → 勾选CREATE TABLE、COMMENT、FOREIGN KEY,然后保存为model_a.sql、model_b.sql等文件 - 使用文本编辑工具(如 VS Code、Notepad++)打开所有 SQL 文件,手动删除重复的
CREATE DATABASE和USE语句;通常只保留第一份脚本中的USE,其余全部删除 - 逐一检查各个 SQL 脚本中是否存在同名表但字段定义不一致的情况(例如
user.id在一个模型中是INT,在另一个模型中却是BIGINT),这类结构冲突必须人工判断和处理,无法依赖工具自动合并 - 将清理并确认无误后的 SQL 合并成一个文件(例如
merged_model.sql),然后在 Na vicat 中新建空白模型 → 右键模型 → “从 SQL 文件正向工程”
合并后必调的三个设置
很多人在导入完成后会发现模型“看上去没问题,但实际不好用”,常见原因通常集中在以下几个设置:
- 外键关系线默认不显示:右键模型画布 → “显示关系线”,否则各个表看起来像彼此独立,无法直观看出关联关系
- 字段注释缺失:如果导出 SQL 时没有勾选
COMMENT,那么导入后相关字段的COMMENT信息会全部为空;因此重新导入前一定要先确认导出选项是否完整 - 布局混乱:通过正向工程生成的表通常会堆叠在左上角,需要手动拖拽整理,或者使用 “自动布局”(右键画布 → “自动布局”);但当表关系较复杂时,往往仍然需要人工进一步微调
实际上,Na vicat 模型合并最棘手的地方,往往不在具体操作本身,而在数据库设计层面的统一与协调——不同成员分别绘制的模型中,命名规范、主键策略、外键引用方式,很可能从一开始就不一致。真正耗时的,也从来不是点击了哪些菜单,而是必须逐项核对:user_id 究竟应该定义为 VARCHAR(32),还是 BIGINT UNSIGNED;order.status 的枚举值设计,多个模型之间到底能否兼容。这一步绝对不能省略,否则一旦跳过,后续同步到数据库时,问题大概率会直接卡在 DDL 执行阶段,影响整个建模与导入流程。
