使用 UML 符号的 ER 图和 UML 类图有什么区别?

问题描述

我有一个项目需要我创建一个 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 阅读器误解为糟糕的设计(贫血域模型)。 «Entity» 构造型不足以消除歧义,因为它通常在 UML 上下文中与 Entity-Control-Boundary 范式相关联,后者也期望实体具有行为。也许您使用不太模糊的构造型(例如 «Data-Entity»

    )来定义 UML 配置文件
  • 您的链接来源误导了关于 UML 中鱼尾纹的换位:您可以在 UML 中的关联上添加动词短语,但在中间 oc 关联和带有和带有箭头将头靠近文本以显示阅读方向。在 UML 中,关联端的文本是完全不同的东西:它被称为“角色”。 ERD 图中的等效项是在另一端的实体中包含具有角色名称的属性(并且对应于标识另一个实体的主键)。

可以在 Wikipedia article on ERD 的侧栏中找到有关如何以不同符号记录 ERD 概念的更好来源。

编辑:在一篇更一般的文章“A framework for transforming structured analysis and design artifacts to UML”中提出了一种映射算法:它提到另外,{{3} } 应该在 UML 泛化中转换,条件是它是 IsA 关系。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...