2010-04-11 79 views
1

我正在实施一个小型数据库(大学项目),我面临以下问题。实体关系图 - 组成

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

火车{ID,名称,详细}

和A类

全部车辆

这比机车和FreightWagon推广。

甲列车由多个全部车辆在某一时间组成(在不同天滚动

库存将组成不同的列车)。

我所代表的关系火车 - 车辆作为填充金刚石(UML),但我仍然

有许多人在两个表之间一对多的关系。

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

train_RollingStock。

但我如何表示组成?

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

感谢

回答

2

填充金刚石和金刚石清晰之间进行选择时,我有一个简单的经验法则。

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

如果子对象的存在不依赖,则使用明确的菱形。 如果火车头离开了,那么铁路车辆仍然会存在,所以这是一个明显的钻石关系。

但在这种情况下,您可能会模拟哪个车辆连接到哪个列车的历史以及何时。

所以你可能有一个加入班级,引用火车,机车车辆,并有一个开始和结束日期时间。 然后你必须决定关系。你可以有:

  • 列车有许多RollingStockRelatinships的(实心菱形封装)
  • RollingStockRelationship有一个车辆(透明钻石封装)

或者你可以有:

  • 滚动库存有多个RollingStockRelationships(实心菱形封装)
  • RollingStock StockRelationship有一个全部车辆(透明钻石封装)

或者你可以有:

  • RollingStockRelationship分两种类型中的一种(清钻石封装)

最好的设计取决于如何你会使用它,可能还有一些你甚至无法预测的其他因素。你只需要选择一个就可以了。