ERD是否被认为是一种UML图表?

54

实体关系图(ERD)是否被认为是UML图的一种类型,还是它们是一种独立的东西?


2
请考虑接受Gholamali-Irani的答案,而不是Justinas Marozas的答案,因为他没有回答ERD和UML类图之间的关系问题。 - Gerd Wagner
2
我不知道在选择了一个答案之后还可以更改接受的答案。但是我同意,这对于任何用户来说都是一个更详细的答案。 - mts396
6个回答

92

我有另一个想法。我认为我们应该深入研究。

当我们谈论ERD(实体关系图)时,我们在谈论 实体关系建模

它是由Peter Chen(1976)首次提出的。他有两篇关于实体关系建模的著名文章(请参见第一篇第二篇文章)

他谈到了实体关系建模(而不是实体关系图)。 这 是 ER模型

还有一篇关于建模真实世界系统的论文。

ER建模 是(见参考文献,第二段):

在软件工程中,ER模型通常用于表示企业需要记住的东西,以执行业务流程。因此,ER模型成为一个抽象数据模型,定义了可以在数据库中实现的数据或信息结构,通常是关系数据库。


绘图约定技术

当我们谈论ER建模时,有许多绘图约定技术

  1. Chen符号法(一些链接需要翻译)
  2. IDEF1X符号
  3. Bechman符号
  4. Martin符号
  5. Abrial的(min, max)-符号,创建于1974年
  6. UML类图

其他符号(请参见参考资料

插入图片描述

以上所有符号均用于实体关系建模或数据建模。

UML符号和其他ER符号之间没有重大差异。它们都建模数据模型的最重要元素。

最后: UML是一组标准的图形工具,用于建模整个项目或部分内容。 我们可以使用UML(类图)进行实体关系建模,并将其命名为我们的ER模型或ERD。因此,我们可以说:这是我在UML符号下的ERD。


3
非常感谢您提供的详尽信息,如果可以的话,我会给予10个赞。现在我明白了。我熟悉大多数符号,只是不确定官方的理解是什么。 - mts396
2
你的UML中的<>需要是实心三角形。 - qwerty_so
3
只有陈式符号能够直接表达实体关系模型中的概念,例如n元关系和关系上的属性。其他符号更接近于表格图或网络数据模型图。 - reaanb
2
@reaanb,非常感谢。我认为我们可以使用UML中的N-ary Association来建模ER的“n元关系”(请参见此处)。我不确定“关系属性”,也许UML的Association Classes类似于ER中的关系属性。 - Gholamali Irani

16

ERD是独立的。 它不在UML规范中。您可以从链接下载规范PDF。

UML是面向对象建模的常用符号/语言,其中包括许多图表类型。ERD是用于数据建模(属性和关系)的图表。某些结构化UML图表在您可以建模的内容方面非常相似,但概念不同。

UML图表类型:

UML图表类型


5
补充一下这个答案,理论上UML中与ERD相当的是类图。虽然它们不完全相同。 - Ister
2
ERD和类图并不完全重叠,它们可以/应该建模的内容有所不同,但是它可能是最接近的替代方案。 - Justinas Marozas

4
这是在Google上的第一个搜索结果:
关键区别:UML代表统一建模语言。ERD代表实体关系图。UML是一种流行且标准化的建模语言,主要用于面向对象软件。实体关系图用于结构化分析和概念建模。

5
"conceptual database modeling" 的翻译是“概念性数据库建模”。 - qwerty_so

3
我对Jarek有不同的看法。没有什么阻止你使用UML对数据进行建模。请记住,UML在其基础上并不新颖,它代表了许多类型的图表(包括ERD)的演变,并尝试标准化这些符号以创建一种用于系统设计通信的一致语言。
ERD用于模拟系统的静态模型。它们展示了系统中相关的实体并表达了它们之间的关系。
在UML类图中,类图诞生于ER图,用于表示类之间的关系。如果您认为(在其最简单形式下)类是数据和方法的组合,那么忽略方法后,您将得到一个数据模型(尽管其语法与传统ERD有所不同)。
因此,如果您选择排除方法和指示数据保护的模型方面,则ERD与UML中的类图相关。
但是,UML本身具有更广泛的目的,作为一组建模工具,可以集体用于建模系统的静态和动态性质。它包括促进对系统进行更完整建模的图表:
  • 类图用于静态对象关系建模,
  • 对象图用于动态建模对象/实例关系,
  • 状态机/图用于建模系统如何通过状态转换,
  • 序列和协作图用于展示系统组件如何协同工作,
  • 活动图(替代流程图)用于展示/记录命令式流程,
  • 还有一些其他的,你可以查看 http://www.agilemodeling.com/essays/umlDiagrams.htm 了解概述。

2

作为一种面向对象的符号表示法,UML与数据建模无关。很多时候我看到人们把属性当作数据列来解释,这是不正确的。我们可以将简单数据或任何复杂的其他对象放入属性中。

对于数据建模(数据库、关系型数据库),我们使用ERD图表;对于在对象系统中存储数据,我们可以使用ORM(对象关系模型)。如果我们使用像活动表或活动记录这样的模式,它就是混合的UML/数据模型。


1
我对安迪的看法不同。在UML类图中,您描述了两个类之间的关系。使用ERD,您可以讨论超过两个实体之间的关系。
这就是为什么Chen图中的基数与UML类图相比位于相反的位置的原因。您必须考虑每个单独实体的关系数量。
让我们看一个简单的例子:
在这个小例子中,每个供应商必须至少与一个交付建立关联。但是可能存在未交付物品和没有任何交付的项目。

UML 有 20 多种类型的图表,类图仅是其中之一。接受答案中的关系图也是 UML。 - Dmitry
@Dmitry,你会如何在UML中建模三个实体之间的关系? - fireabend
1
在UML类图中,仅描述两个类之间的关系是无意义的。您可以描述任意数量元素之间的关系(而不仅仅是类)。 - qwerty_so
@qwerty_so,请随意为我的示例创建一个UML类图。 - fireabend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接