在 UML 中,组合是否意味着关联 class?

In UML, does composition imply an association class?

在一个 class 由另一个 class 组成的 UML 图中,是否存在隐式关联 table,或者是否需要显示?

例如,如果我有由段落组成的章节,仅此一项就足够了吗:

或者像这样显式显示关联 class:

我从未见过像后一个例子那样完成的,所以我假设它是隐含的。或者我没有正确规范化数据(考虑到章节都出现在章节 class 和段落 class 中)。

干脆,没有什么言外之意。如果你需要一个关联class,你需要定义它。然而,UML 不是关于图表,而是关于建模。如果愿意,您可以在图表中省略关联 class。不过,关联 class 仍将存在于您的模型中。

不,这不是暗示。

您之所以没有看到这一点,是因为在大多数情况下它根本没有意义。在关联 class 中, class 部分另外描述了关联的属性。在您的示例中,您创建了一个实际上带来很少或什么都没有的人造物体。这种方法对于组合不可能的多对多关系很有用(每个部分最多可以有一个整体)。即使您想显示外键,它也只会在 classes 之一上。但这是协会本身暗示的。根据 UML 规范,内联属性等同于关联。

此外,在 UML 上,您可以简单地描述多对多关系,但在关联端应用适当的多重性。您可能希望仅在代码级别建模时显示 class 描述。

不,这不是暗示。

UML 不是关于 tables,而是关于 classes。 class 图的作者应该告诉观众应该如何解释 class。一些 UML 图模拟现实世界,另一些模拟应用程序功能,还有一些描述物理实现。

显然,阅读您的问题,您正在为关系数据库建模,其中 class 是物理 table。在那种情况下,我希望每个 table 都明确建模为 UML class.

UML 标准不要求这样做。

顺便说一句,符号 (PK) 和 (FK) 不符合 UML 标准。