【问题标题】:Entity Relationship diagram - Composition实体关系图 - 组成
【发布时间】:2010-04-12 06:41:49
【问题描述】:

我正在实施一个小型数据库(大学项目),我面临以下问题。

我创建了一个类图,其中我有一个类

火车{Id, Name, Details}

还有一个班级

机车车辆

这比 Locomotive 和 FreightWagon 中的一般化。

一列火车在某个时间由多个RollingStock组成(在不同的日子滚动

股票将组成不同的火车)。

我将关系火车 - 机车车辆表示为钻石填充 (UML) 但我仍然

两个表之间存在多对多关系。

所以我想我必须创建一个额外的表来解决多对多关系

train_RollingStock。

但我如何表示组合?

我还可以使用填充的钻石吗?如果是,在哪一边?

谢谢

【问题讨论】:

    标签: uml


    【解决方案1】:

    在填充钻石和透明钻石之间进行选择时,我有一个简单的经验法则。

    如果子对象的存在依赖于父对象,那么它就是一个实心菱形。 一只手有5个手指。如果手消失了,手指也会消失。

    如果子对象的存在不依赖,则使用透明菱形。 如果机车离开,机车车辆仍然存在,因此这是一个明确的菱形关系。

    但在这种情况下,您可能正在对哪个机车车辆连接到哪个火车以及何时连接的历史进行建模。

    因此,您可能有一个加入班级,其中提到了火车、机车车辆,并有一个开始和结束日期时间。 然后你必须决定关系。你可以:

    • Train 有许多 RollingStockRelatinships(填充钻石封装)
    • RollingStockRelationship 有一个 Rolling Stock(透明菱形封装)

    或者你可以:

    • Rolling Stock 有许多 RollingStockRelationships(填充钻石封装)
    • RollingStockRelationship 有一个 RollingStock(透明菱形封装)

    或者你可以:

    • RollingStockRelationship 指向两种类型之一(透明钻石封装)

    最佳设计取决于您将如何使用它,并且可能还有一系列您甚至无法预测的其他因素。你只需要选择一个并使用它。

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 2010-10-24
      相关资源
      最近更新 更多