Navicat Data Modeler逆向工程仅提取数据库元信息生成物理模型图,不读取数据;支持数据库/模式/表三级右键导入或通过“从数据库导入”菜单精细控制;外键需手动补全,类型转换需用“转换模型”功能,同步前须校验隐性差异。
navicat data modeler 逆向工程数据库,本质是把已有数据库结构(表、字段、主键、外键、索引等)自动转成可视化的物理模型图。它不读取数据内容,只提取元信息,所以速度快、安全、可反复操作。
右键菜单是最直接的逆向入口
在 Navicat 主界面的“导航窗格”中,你有三种常见起点,对应不同粒度:
- 对某个
数据库右键 → 选“逆向模式到模型”,会导入该库下所有 schema(如 MySQL 的 database、PostgreSQL 的 schema)及其全部表 - 对某个
模式(如public)右键 → 同样选“逆向模式到模型”,只处理该模式内对象 - 在“对象”窗格中多选若干
表或视图→ 右键 → “逆向表到模型…”,仅生成所选对象的模型,适合聚焦核心表或规避敏感表
注意:若目标数据库无权限查看 information_schema 或系统视图(如 PostgreSQL 的 pg_class),逆向会失败并报错 Access denied 或 permission denied,需确认账号有 SELECT 权限在系统目录表上。
从模型窗口导入更可控,但步骤略多
适用于需要预设建模类型(概念/逻辑/物理)、或想统一管理多个来源模型的场景:
- 先点击主工具栏
模型→新建模型,选择目标数据库类型(如MySQL 8.0)和模型类型(推荐选物理模型) - 打开新模型后,选菜单
文件→从数据库导入 - 在弹出对话框中选已配置好的连接,再手动勾选要导入的
数据库、模式、表或视图—— 这里能看清每个对象是否含外键、索引等细节,比右键方式更透明
这个流程支持批量取消勾选“注释”“触发器”“存储过程”等非核心结构,避免模型图被干扰。但要注意:如果数据库使用了特定方言特性(如 MySQL 的 JSON 字段、PostgreSQL 的 ARRAY 类型),部分可能被降级为通用类型(如 TEXT),需人工校对。
逆向后外键关系常丢失,必须手动补全
Navicat 能自动识别主键,但**不会自动推断外键约束**——哪怕源库中已定义 FOREIGN KEY,逆向生成的模型里也只体现字段名和类型,不画连线。这是最常被忽略的坑。
- 进入模型编辑界面后,用鼠标从一张表的外键字段拖拽到另一张表的主键字段,松手即建立关系线
- 双击该连线可编辑参照动作(
ON DELETE CASCADE等)、命名关系(如orders → customers) - 若源库未显式定义外键(靠应用层维护逻辑关联),你得根据业务理解手动连,不能依赖逆向结果
同步回数据库前,务必检查所有关系线是否完整。否则执行 同步模型到数据库 时,Navicat 默认不会添加缺失的外键约束,除非你在同步设置里勾选“创建外键”且确认差异项。
模型转换数据库类型时,逆向结果不可直接复用
比如你从 MySQL 逆向出物理模型,再想转成 PostgreSQL 兼容版本,不能直接改模型属性。必须用 工具 → 转换模型 功能重建:
- 原模型中
VARCHAR(255)会被映射为 PostgreSQL 的CHARACTER VARYING(255) - MySQL 的
ENGINE=InnoDB、AUTO_INCREMENT等会被替换为 PostgreSQL 的GENERATED BY DEFAULT AS IDENTITY - 但自定义函数、全文索引、分区规则等无法自动转换,需手动删减或重写
真正关键的不是逆向动作本身,而是逆向之后是否校验了字段精度、默认值表达式、字符集继承关系这些隐性差异——它们往往在第一次 同步到数据库 时报语法错误才暴露出来。


















