【问题标题】:Translate ER to UML将 ER 转换为 UML
【发布时间】:2021-12-08 23:37:53
【问题描述】:

如何将此 ER 关系转换为 UML:

这是我的尝试:

这是正确的做法吗?感觉有点失落。

【问题讨论】:

  • 我不太了解 ERD,但如果菱形代表关联类,您的尝试将是正确的。
  • 我投票结束这个问题,因为它不是一个编程问题。它在Code Reviewmight be on-topic
  • @qwerty_so,是的,这是一个很难分类的问题,但我认为关于没有 any 代码的 ER 图和 UML 的问题在这里客观上是题外话。仅仅因为这里有人可以回答并不能成为话题。
  • @Chris 我们会看到 ;-) 但是,代码就是您看到的图表。 UML 是一种语言,而图表是该语言的(部分)句子。就像代码 sn-p 是相应编程语言的(部分)句子一样。所以这是一个有效的问题。可能不是我会兴奋的,但有效的。
  • @qwerty_so,我强烈反对并相信大多数其他用户也会如此。但是由于这里没有有用的主题标签,因此很少有用户会看到它,因此需要一段时间才能关闭。 (我只在它出现在审查队列中时才看到它。)一般来说,任何没有语言标签的问题都可能是题外话。我看到你自己在uml 和相关标签上赢得了大部分声誉,所以你显然有偏见。这并没有使这个问题成为一个坏问题(或使您的专业知识无用),这只是题外话here

标签: uml entity-relationship class-diagram


【解决方案1】:

ERD diagram 中使用 Chen 的符号:

  • 矩形是实体,在 UML 中会被翻译成类;
  • 菱形是实体之间的关系,在 UML 中将转化为关联;
  • (省略号是属性化的,在 UML 中将表示为属性或与另一个类的关联);
  • 基数将转换为您将在关联结束时显示的multiplicities

因此,在 UML 中,您将拥有一本书,以及一条标记为“sequel”的反身关联线,并且两端都带有 1。比你展示的要简单得多。

有关映射和细微差异的更多解释,以及将一个转换为另一个,您可以查看另一个SO answer

最后,我不确定您在 Chen 的 ERD 符号中的 1:1 关系是否完全等同于您的表格符号:您使用的关联表对应于多对多关联(因为同一本书可以出现在多个“记录”)。需要额外的代码才能将其使用限制为 1:1。但顺便说一句,我不确定续集关联是否会是一对一的(即一本书只有另一本书作为续集,反之亦然)。

【讨论】:

  • 嗯。实际上,我像他那样在 UML 中为 Sequel 建模,而不是简单的关联。当涉及到数据库时,您将需要一个在 UML 中通常映射到某个类的表。
  • 想想看,续集也会有一些名字(取决于这个和那个可能更多的信息)。
  • @qwerty_so 原始问题中误导的方面是关联的名称:应该命名为“续集”的不是关联,而是关联结束的角色。因为续集——正如你正确指出的——是一本完整的书/故事/电影。现在我同意你的观点,原始的 ERD 模型没有解释续集与续集的关系。它可以解释两者之间的关系。在这种情况下,我会使用关联类。然而,这些附加信息似乎不在原始模型中,并且(令人惊讶)是 1 比 1,这使得 AssoCl YAGNI
  • 基于这个定义:merriam-webster.com/dictionary/sequel我想知道一本书是否只有一个后续发展(即电影业喜欢为每个主角制作续集)。此外,一本书可能是不止一本原著的后续发展(例如,如果合并了多个叙事世界)。这让我质疑 1:1 是否真的是正确的 ERD 基数,以及 UML 关联是否不应该更好地具有 : 多重性。但由建模者根据要求决定。
  • 呵呵。这就是 UML 的全部意义所在:开始思考事情......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2017-09-25
  • 2013-08-08
相关资源
最近更新 更多