在UML ER图中,使用m..m表示多重性。

3
根据不同的资源,在UML符号中,多重性有不同的形式。 以下是在用例图中可以使用的一些形式。
  • 1..1

    0..*

    1..*

    m..m

    m..n

在T. Connelly和C. Begg的数据库系统书中,他们提供了5..10(使用基数和参与度的数字)来表示多重性的替代方式。当你使用UML符号绘制实体关系图时,你能使用相同的多重性吗?特别是我想知道在使用UML符号时,在ER图中使用m..m是否正确。

你写的是"用例图"。尽管在用例图中可以使用多重性,但在实体关系图的语境中,也许你指的是"类图"? - www.admiraalit.nl
2个回答

2
UML不是ERD的符号,而是一种具有自己语义的语言。当然,你可以在UML中建模与ERD类似的事物,甚至更多。
话虽如此,在UML中n..m是有效的符号,其中m和n都对应于值(字面量和常量)。请注意,在UML中它被称为多重性,不要与特定集合中的项目数量混淆。
我借此机会警告其他读者,不要将其与ERD中的N:M关系混淆,因为在UML中,这将是0..* 0..*关系(或任何适当的下限,因为N:M中没有指示参与度)。

0
让我先确保你知道什么是“终极真理”。对于UML来说,它就是在OMG网页上可以找到的UML规范。
现在,虽然我手头没有规范,所以我不能给你精确的引用,但这部分规范你应该牢记于心。让我来引导你一下。
在UML规范中,多重性指示器的形式为m..n,其中m是任何非负整数(从数学意义上讲,理论上值没有上限),而n是一个扩展的正整数,即它可以是大于0的任何整数,或者是用*(星号)表示的无穷大。此外,m和n必须满足不等式m<=n,并假设*大于任何整数。
每个关联端点都可以定义多重性,这意味着对于简单关联,你有两个多重性,一个用于每个连接的实体(通常是一个类)。
现在,多重性指示了特定类类型的对象在给定关联中必须涉及的数量。关联的每个端点都为与该端点连接的给定类定义了多重性。
UML规范允许使用某些简写符号: m..m 可以缩写为 m(换句话说,如果 m 和 n 相等,只需写一次数字)。 0..* 可以缩写为 *。 由于不能使用 .. 符号(下限必须是实际整数),所以没有歧义。如果表示只有一个数字,意味着上限和下限都相等(等于该数字),如果表示只有一个星号,则表示多重性为 0..*(因此允许任意数量的对象)。
还有一些常见的符号表示方式,例如: 0..1(表示最多可以涉及 1 个对象) 1(表示必须恰好有一个对象) 当然还有 *(即允许任意数量的对象)。
在解释时,m..n 表示一般化,但在实际图表中,n 和 m 必须解析为实际数字。

1
基本上是关于UML方面的很好的解释。但它没有解释这与ERD方面的关系。 - qwerty_so
据我所知,在语义上和乘法规则(限制)方面,只有一些细微的差异。例如,在记录ERD时,关联的一侧总是具有多重性,要么是1,要么是0..1(至少在ERD描述数据库级别方案时)。此外,UML更加具体。ERD所显示的只是1:n,而UML可以在更精细的层次上展示。 - Ister

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