navicat 17 的 uml 符号仅是视觉样式切换,不支持 uml 类图语义:不生成属性/方法区、无可见性符号、基数仍以固定小字标注在线段两端,无法实现关联端标签、多重性嵌入或关联类等高级特性。

Navicat 17 不支持将 ER 图的基数标记(Cardinality)切换为 UML 类图样式。它只提供三种标准符号系统:Crow’s Foot、IDEF1x 和 UML,但这里的 UML 选项仅控制实体/类的绘制形状与关系线类型(如用矩形框表示类、实线+空心三角表示泛化),不改变基数标记的显示方式——即不会把 1..*、0..1 这类 ER 风格的基数标注,替换成 UML 类图中常见的「带 multiplicities 的分隔栏」或「关联端标签」。
为什么 Navicat 的 UML 符号 ≠ UML 类图?
-
UML符号模式下,Navicat 仍沿用 ER 模型语义建模:表 = 类,外键 = 关联,主键 = 属性,但它不生成属性区、方法区、可见性符号(+/-/#),也不支持在关联线上标注角色名或多重性(如customer: Customer [0..*]) - 所有基数仍以固定位置小字形式显示在线段两端(如左端写
1,右端写N),无法移动、合并或嵌入到类框内 - 关系线本身不支持 UML 中「关联类(Association Class)」、「限定符(Qualifier)」等高级元素
如何接近 UML 类图效果?(有限妥协方案)
启用
UML符号:菜单栏 →Model→Notation→ 选择UML
→ 此时表会变成无阴影矩形,继承关系用空心三角箭头,但基数文字照旧-
手动覆盖基数显示:
- 右键某关系线 →
Edit Relationship - 在
Cardinality标签页里,可分别设置Source和Target的值(如填1/0..*) - 填写后,这些字符串会以小号字体贴在线段两端,位置固定不可拖拽
- 右键某关系线 →
-
用注释模拟 UML 关联端标签:
- 右键画布 →
Add Note - 输入类似
orderItems : OrderItem [0..*] - 拖到关系线附近,手动对齐——但注释和关系线无绑定,缩放或重排版后易错位
- 右键画布 →
-
禁用自动基数显示,全靠文字说明:
-
Model→Options→ 取消勾选Show cardinality on relationship lines - 后续所有基数含义需靠命名约定(如关系名写成
user_has_many_posts (1:N))或单独加注释
-
容易踩的坑
- 切换符号模式后,已存在的关系线样式可能重置,需逐个检查
Edit Relationship中的Cardinality设置是否被清空 - 导出为 SVG 或 PDF 时,UML 模式下的字体渲染在不同系统上不一致;macOS 上常出现
0..<em></em>显示为0. .(多出空格),Windows 上又可能挤在一起 - 如果你真正需要的是「带属性/方法/可见性的完整 UML 类图」,Navicat 不是合适工具——它本质是数据库建模器,不是 UML 建模器。这类需求应直接用
Visual Paradigm、PlantUML或draw.io生成
UML 类图的关键不在“画得像不像”,而在于能否表达封装、继承、多态、接口实现等面向对象语义。Navicat 的 UML 符号只是视觉皮肤,不引入任何 OO 语义支持。如果项目文档要求交付标准 UML 类图,别试图在 Navicat 里硬凑,从源头就该用对工具。











