Navicat 17模型画布不支持字段级隐藏,右键删除会真实删列,“显示”开关无效;简化视图需依赖主/外键标记、关闭类型/注释显示、分层管理及确保数据类型一致。

为什么“隐藏字段”不能靠右键删除或设为不可见
Navicat 17 的模型画布不支持对单个字段做「视觉隐藏」——你右键字段选「删除」会真删掉列,选「属性」里关掉「显示」也没效果。它的「简化视图」逻辑只作用于整张表的呈现层级,不是字段级开关。真正能控制字段是否出现在 ER 图连线和标签上的,是字段的「参与关系」状态和「主外键标识」。
用「主键/外键标记」过滤出关键字段路径
Navicat 自动在画布上突出显示主键(PK)、外键(FK)和索引字段,其余普通字段默认不参与连线、也不影响布局计算。所以最直接的简化方式,就是只保留业务关系链上的字段:
- 打开每张表的
设计表视图,确认只有真正用于关联的字段打了勾:比如user_id、order_id、product_id - 把纯业务字段(如
full_name、remark、updated_at)的「主键」和「外键」复选框全部取消 —— 它们仍保留在表结构中,但不会出现在 ER 图的连线起点/终点,也不会被自动布局算法当作锚点 - 特别注意:如果某字段被设为外键但目标表不存在,或参照字段名拼错(比如写成
user_idd),Navicat 会静默忽略该关系,导致你以为它“没参与”,其实只是失效了
批量关闭非核心字段的「显示注释」和「显示类型」
即使字段不出现在连线中,它的类型和注释仍会以小字堆在表框下方,拉长视觉干扰。这些可以通过模型设置统一收起:
- 菜单栏 →
工具→选项→ 切换到模型标签页 - 取消勾选
在表中显示数据类型和在表中显示列注释 - 这个设置会影响整个工作区所有表,但不会改动实际 DDL;导出 PDF 或生成 SQL 时,类型和注释依然完整保留
用「层(Layer)」隔离租户/配置类表,再单独控制其字段可见性
当系统里有大量 tenant_a_users、sys_config 这类支撑型表时,它们的字段往往全都不参与主业务流。与其一张张关字段,不如分层管理:
- 右键画布空白处 →
新建层,命名为租户表或系统配置 - 拖选对应表进该层,然后右键该层 →
属性→ 勾选隐藏层内所有表的非主外键字段(此选项仅 Navicat 17.2+ 支持) - 注意:该功能只影响画布渲染,不影响正向工程生成的 SQL;若用的是 17.0 或 17.1,需手动进每张表关掉字段显示
真正容易被忽略的是:Navicat 不会因为你关了字段显示就跳过数据类型校验。比如两张表都用 INT 存 ID,但一张是 INT(10) UNSIGNED,另一张是 INT SIGNED,外键仍会创建失败——画布看着干净,同步时却报错。简化视图的前提,永远是先确保逻辑一致性,而不是让图看起来整齐。











