Navicat 16 不支持自动生成或拆分微服务子模型,因其采用单工作区、单.ndm文件架构,无子模型、跨模型引用及自动聚类功能;唯一可行方式是人工用Group逻辑分组并导出可视化图表。

Navicat 16 本身不支持“为微服务架构自动生成或拆分多个独立子模型”,它没有模型拆分、子模型导出、跨模型引用或服务边界自动识别能力。所有子系统建模必须靠人工分组 + 手动隔离 + 分别导出完成。
为什么不能直接“拆分子模型”
Navicat 16 的数据模型是单工作区、单物理模型文件(.ndm)结构,所有表、视图、关系都属于同一个逻辑模型实例。它不提供:
- 子模型(Sub-model)或嵌套模型(Nested Model)概念
- 模型间外键引用(即 A 模型里的表不能通过外键指向 B 模型里的表)
- 按 schema / service name 自动聚类表的功能
- 一键导出“某组表为独立模型文件”的菜单项
所谓“为微服务拆分子模型”,本质是用 Group 模拟业务边界,再配合隐藏+导出,生成多个视觉隔离的 ER 图——但底层仍是同一个模型文件。
用 Group 实现微服务模块的逻辑隔离
这是唯一可行路径,关键在于命名规范、分组粒度和手动维护:
- 每个微服务对应一个顶层
Group,如user_service、order_service、payment_service(命名禁用空格、中文、特殊字符) - 右键画布 →
Add Group,然后拖入该服务涉及的全部表(含关联视图、函数,若需体现) - 双击
Group标题栏重命名,避免默认的Group 1;嵌套需求可再在order_service内建order_core和order_audit,但 Navicat 不显示层级线,全靠缩进+命名区分 - 外键连线跨
Group显示是正常行为,不代表错误;若连线断裂,先关闭Auto Layout(View → Auto Layout),再手动对齐主外键字段位置
导出每个微服务为独立 ER 图(非独立模型文件)
Navicat 不支持导出为新 .ndm 文件,但可导出为 PDF/SVG/PNG 等可视化格式供协作或文档使用:
- 右键其他所有
Group→Hide Group(不是 Delete!否则丢失模型结构) - 只保留目标微服务对应的
Group可见 - 执行
File → Export → ER Diagram,此时导出范围仅限可见内容 - 导出前务必进
Page Setup:设为A4 Landscape,Scale = 75%,否则单个 Group 内容可能字体过小或排版溢出
真正需要独立子模型时的替代方案
如果项目已明确走向微服务且需长期维护多个物理隔离的数据库模型(比如各服务独享 schema、独立 DDL、不同团队维护),Navicat 16 就不是合适工具:
- 改用
Navicat Data Modeler(专业版),它支持在一个工作区中创建多个独立模型(New Model),每个模型可保存为单独.ndm文件,支持跨模型比对、同步和正向/逆向工程 - 或直接使用代码化建模工具(如
dbt+Mermaid或SQLFluff+ERDPlus),把表结构定义为 YAML/SQL,用脚本生成各服务专属 ER 图 - 注意:
Group导出的 PDF 不含元数据,无法反向生成 DDL;若需生成各服务专属建表语句,必须在导出前,用Filter(右下角漏斗图标)筛选出对应表,再执行Export → SQL File
最易被忽略的一点:Navicat 的 Group 是纯前端组织手段,不影响任何数据库对象定义、权限、schema 绑定或部署流程。它只是画布上的“便利贴”,别把它当成架构治理的基础设施。


















