我正在实施一个小型数据库(大学项目),我面临以下问题。
我创建了一个类图,其中有一个类
训练{Id,Name,Details}
和一个班级
全部车辆
这比机车和货运公司概括。
列车由多个RollingStock在特定时间组成(在不同的日子滚动
股票将组成一个不同的列车。)
我代表了关系训练 - 滚动的股票作为钻石填充(UML),但我仍然
两个表之间有多对多的关系。
所以我想我必须创建一个额外的表来解决多对多的关系
train_RollingStock。
但我如何代表作文?
我还可以使用填充的钻石吗?如果是的话在哪一方?
由于
答案 0 :(得分:2)
在填充钻石和透明钻石之间进行选择时,我有一个简单的经验法则。
如果子对象的存在依赖于父对象,则它是一个填充的菱形。 一只手有5个手指。如果手消失,手指也会消失。
如果子对象的存在不依赖,则使用透明钻石。 如果机车离开,车辆仍然存在,所以这是一个明确的钻石关系。
但是在这种情况下,您可能正在建模哪个车辆所附着哪个列车的历史以及何时。
所以你可能有一个加入课程,参考火车,机车车辆,并有一个开始和结束日期时间。 然后你必须决定关系。你可以:
或者你可以:
或者你可以:
最佳设计取决于您如何使用它,以及可能还有一些您甚至无法预测的其他因素。你只需选择一个并继续使用它。