问题描述
我有一个项目需要我创建一个 UML 类图。我在同一个项目中的先前任务中得到的是使用 UML 表示法的 ERD。另外值得注意的是,这个项目是和数据库相关的,里面没有太多的编码,所以基于其他编码创建类图可能不是这里的主要目标。
我尝试谷歌搜索“如何将 erd 转换为类图”,但所有搜索结果只显示了如何将使用 Crow's Feet 符号的 ERD 转换为 UML 类图。
我还用谷歌搜索了 UML 符号 ERD,发现 this site 说,
在 UML 表示法中,实体被建模为具有实体构造型的“类”。
这是否意味着使用 UML 表示法的 ERD 与 UML 类图相同?如果不是,有什么区别?
注意:我知道已经有关于 ERD 和类图之间区别的问题,但我专门询问 ERD 使用 UML 表示法。
解决方法
在 Chen 的原始 ERD 符号中,属性是连接到实体的椭圆,用矩形表示,可以用 losanges 表示关系。由于许多属性,这导致了非常庞大和复杂的图表。
Crow's Feet 符号因此变得更流行,因为它允许以更紧凑的方式表达相同的模型,将属性与其实体分组在矩形中,并使用基数的直观视觉表示。但是现在 UML 是建模者的通用语,很容易考虑其他替代方案。
您的 linked source 建议将实体、属性、关系的核心 ERD 概念非常自然地映射到 UML 类、属性和关联:
(...) 实体被建模为具有实体构造型的“类”。
(...) 属性可以排列成框样式 (...)
关系显示为连接两个实体的单条实线。最小和最大基数沿线显示,可以添加动词短语以完全表征关系的性质。
事实上,最适合 UML 中 ERD 图的符号是类图。
但是要注意细微的语义差异。例如:
-
在 UML 中,任何属性(您的映射与属性相关的内容)都可以在框内建模(作为您所谓的属性)或作为相关关联类(作为您所谓的实体)与拥有的关联结束。
-
UML 类应该有行为(这是因为底层的 OOP 概念)。没有行为的类可能会被 UML 阅读器误解为糟糕的设计(贫血域模型)。
)来定义 UML 配置文件«Entity»
构造型不足以消除歧义,因为它通常在 UML 上下文中与 Entity-Control-Boundary 范式相关联,后者也期望实体具有行为。也许您使用不太模糊的构造型(例如«Data-Entity»
-
您的链接来源误导了关于 UML 中鱼尾纹的换位:您可以在 UML 中的关联上添加动词短语,但在中间 oc 关联和带有和带有箭头将头靠近文本以显示阅读方向。在 UML 中,关联端的文本是完全不同的东西:它被称为“角色”。 ERD 图中的等效项是在另一端的实体中包含具有角色名称的属性(并且对应于标识另一个实体的主键)。
可以在 Wikipedia article on ERD 的侧栏中找到有关如何以不同符号记录 ERD 概念的更好来源。
编辑:在一篇更一般的文章“A framework for transforming structured analysis and design artifacts to UML”中提出了一种映射算法:它提到另外,{{3} } 应该在 UML 泛化中转换,条件是它是 IsA
关系。