Navicat 15 中「关系视图」比 ER 图更高效查单表依赖,路径为:连接数据库→切换至「关系视图」→勾选目标表→右侧即显全部外键关系,含来源/目标表、字段映射及 ON DELETE 行为,结果可复制,无需模型保存或逆向成功。

Navicat 15 的「关系视图」比 ER 图更适合查单表依赖
直接切到 ER 图再手动找连线,对几十张表的模型基本不可行——连线交叉、布局混乱、缩放后字段看不清。真正高效的方式是绕过图形,用 Navicat 内置的「关系视图」(Relationship View)精准定位某张表被谁引用、又引用了谁。
操作路径很短:连接数据库 → 左侧对象浏览器切换到「关系视图」选项卡 → 勾选目标表(比如 orders)→ 右侧立刻列出所有直接关联的外键关系,包括来源表、目标表、字段映射、ON DELETE 行为。
- 它不依赖模型是否保存、是否逆向成功,只要数据库里外键真实存在,就能读出来
- 双击任意一条关系线,弹出对话框显示完整约束名(如
fk_orders_user_id)、字段类型是否匹配、是否允许 NULL - 比 ER 图快至少 3 秒,且结果可复制粘贴,适合写文档或发给同事核对
在模型中用 Ctrl+Shift+F 搜索时,必须先确认表已“加载进模型”
很多人按 Ctrl+Shift+F 没反应,不是快捷键失效,而是当前窗口根本不在模型上下文里。Navicat 的搜索功能只对「模型」(Model)生效,不是对数据库连接本身。
- 必须先右键数据库 → 「逆向数据库到模型」,或文件 → 「新建模型」→ 手动拖入
orders表(不能只点开表设计界面) - 模型首次打开后,务必点一次「保存」(哪怕没改内容),否则部分版本(如 15.0.29)的搜索索引不会构建
- 搜索框输入
orders后,勾选「仅显示匹配项」,画布上只剩这张表和它直连的上下游表,此时再观察连线方向:箭头指向orders是被依赖,从orders指出是它依赖别人
外键没显示连线?先查数据库层面是否真有约束
ER 图或关系视图里看不到依赖,大概率不是 Navicat 问题,而是 MySQL 根本没建好外键。尤其常见于从旧库迁移或 MyISAM 引擎表。
- 执行
SHOW CREATE TABLE orders,确认输出里有CONSTRAINT `fk_orders_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)这类语句 - 检查引擎:
SHOW TABLE STATUS LIKE 'orders',Engine列必须是InnoDB(MyISAM 不支持外键) - 查元数据:
SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'orders' AND TABLE_SCHEMA = 'your_db',空结果=无外键定义 - 权限问题:当前用户需对
information_schema有SELECT权限,否则逆向时跳过外键解析
导出依赖图前,记得手动展开分组并刷新缓存
你看到的 ER 图布局可能被“分组框”(Group)折叠过,或者缓存没更新导致依赖关系滞后——比如刚删了外键,图里还连着线。
- 在模型编辑器中,右键空白处 → 「展开所有分组」,避免目标表被藏在折叠区域里
- 右键模型标签页 → 「刷新」,强制重新读取数据库 schema(不是右键数据库连接的刷新)
- 导出前切到「ER 图」视图,再按
Ctrl+Shift+F搜一遍,确认画布上显示的连线和关系视图一致 - 导出格式优先选
PNG(兼容性好)或PDF(矢量清晰),别用SVG——某些版本导出后连线文字错位
最常被忽略的是:关系视图和模型搜索都基于内存索引,不是实时查库。删了外键但没刷新模型,搜索仍会命中“幽灵依赖”。遇到疑似不一致,先刷新模型,再查 information_schema,最后才怀疑 Navicat。


















