er图搜索仅在「模型」窗口生效,需通过文件→新建模型或双击.nm文件进入模型上下文,ctrl+shift+f调出过滤面板;推荐用order or payment or shipping_组合过滤并排除audit等干扰项;导出前须检查关联线完整性,隐藏非匹配项不自动断开连线;多人协作应依赖ord*等命名规范固化业务域而非共享过滤配置。
er图搜索只在「模型」窗口生效,不是数据库连接页
navicat 的 er 图搜索功能根本不在数据库连接树里——你右键点“表”→“设计表”,或者在“查询”标签页里按 ctrl+f,压根不会出现任何过滤面板。必须先确认当前处于「模型」(model)上下文:要么通过 文件 → 新建模型,要么双击已保存的 .nm 模型文件打开。只有这时,画布上拖进来的表才属于可索引的模型对象,ctrl+shift+f 才能调出真正的搜索过滤面板。
用通配符组合过滤比单关键词更准,尤其要防漏匹配
业务流往往横跨多张表,比如订单流包含 order_header、order_item、payment_log、shipping_record。如果只搜 order,会漏掉后两者;只搜 log 或 record 又可能拉进无关的审计表。正确做法是用组合过滤:
- 在搜索面板勾选「高亮匹配项」+「隐藏非匹配项」
- 输入过滤表达式:
order_* OR payment_* OR shipping_*(Navicat 15+ 支持 OR 逻辑) - 若需排除干扰项,加负向条件:
NOT (audit_* OR sys.* OR mysql.*)
注意:sys.* 这种写法必须带点号,sys 单独写不匹配系统库下的表;* 是通配符,? 不支持。
过滤后导出子图前,务必检查关联线是否完整
Navicat 的「隐藏非匹配项」只是视觉折叠,不会自动断开或重建外键连线。常见坑是:你过滤出 user 和 order_header,但没包含 user_address,而 ER 图里 order_header 到 user_address 的连线还在——这会让业务流看起来有断裂或冗余依赖。
- 导出子图前,手动右键每条连线 →「显示关联表」,确认两端表都在可见范围内
- 若发现悬空连线(一端表被隐藏),说明该关联不属于当前业务流,应右键 →「删除关联」再导出
- 导出为 PNG 或 PDF 时,勾选「仅导出可见对象」,否则隐藏表仍可能被渲染为占位框
多人协作时,过滤配置无法共享,得靠命名规范固化
Navicat 15 的模型搜索过滤是纯前端状态,不保存到 .nm 文件里。你精心配好的 order_* OR payment_* 过滤条件,换台电脑打开同一模型,或者同事接手,全得重配。
真正能落地的解法是反向操作:在建模阶段就用命名约束业务边界。例如:
- 订单域所有表统一加前缀:
ord_order_header、ord_payment_log - 用户域用
usr_*,库存域用inv_* - 这样后续任何人只需搜
ord_*就能隔离整个订单流,无需记忆复杂 OR 表达式
命名一旦松散(比如混用 order、ord、o_),过滤器就退化成手工点选,失去意义。











