navicat 16逆向工程仅还原数据库物理结构,不生成领域模型;需人工重命名表字段、建立语义关系、筛选核心实体,并统一逻辑模型类型、命名规则及逆向范围,配合navicat on-prem server实现版本协同与变更追踪。

Navicat 16 的逆向工程本身不自动统一领域设计,它只忠实还原数据库结构;真正实现团队对齐,靠的是后续人工建模动作和协作规范。
逆向工程生成的模型 ≠ 领域模型
Navicat 执行 逆向模式到模型 后,得到的是物理模型:字段名、类型、外键、索引、约束全照搬,但不会识别“用户”和“客户”是否应合并为 User 实体,也不会把 status_code 和 status_desc 自动聚合成 Status 值对象。它输出的是“数据库长什么样”,不是“业务应该怎样表达”。
常见错误现象:
- 直接拿逆向生成的模型当领域模型交付,导致 ER 图里满屏 ID 字段(如
csr_id、cust_id),没人能说清每个 ID 对应哪类业务主体 - 多人各自逆向同一库,但命名风格不一致(有人写
user_info,有人写t_user),模型无法合并比对
必须手动重构物理模型为逻辑/概念模型
逆向只是起点。要在 Navicat 16 中支撑领域设计对齐,得立刻进入模型编辑阶段:
- 右键点击逆向生成的表 → 选择
重命名,把ups改成Order,把csr表改名为CustomerServiceRep,并补全注释字段说明业务含义 - 选中多个含
_id后缀的字段 → 右键 →设置为主键或设为外键引用,明确关系语义(比如order.customer_id → Customer.id) - 使用
图表功能新建空白图表,只拖入你认可的“核心实体”,隐藏中间表、历史表、日志表等非领域对象 - 在
模型工具栏点击比较两个模型,定期对比成员本地模型与主干模型差异,用同步功能合并变更,而非覆盖
团队协作前必须约定三件事
没有约束的逆向+建模=混乱加速器。以下配置必须在项目启动时统一:
-
模型类型固定选逻辑模型(非物理/概念),避免成员混用建模层级 -
命名规则写进团队 Wiki:表名用 PascalCase(OrderItem),字段用 snake_case(created_at),枚举值表加_enum后缀(order_status_enum) -
逆向范围明确限定:只逆向productionschema,排除test_、tmp_、log_开头的表,防止噪声污染模型
Navicat On-Prem Server 是隐性关键依赖
如果团队没启用 Navicat On-Prem Server,所谓“统一设计”就是纸上谈兵。因为:
- 本地模型文件(
.ndm)是二进制格式,Git 无法 diff,也无法 merge 冲突 - 没有
活动日志,你根本不知道谁在上周把Product表的price字段从DECIMAL(10,2)改成了VARCHAR -
对象筛选和团队成员角色功能缺失,新人可能误删核心图表或覆盖主干模型
真正卡住团队对齐的,往往不是 Navicat 功能,而是模型文件没纳入版本协同闭环——这点最容易被忽略。











