这是三元关系吗?如何在MySql中对其进行建模?

时间:2017-03-25 05:23:21

标签: mysql sql database database-design

卡车有唯一的标识符。

truck_trip_route也有唯一的标识符。

truck_team也有唯一的标识符。

每辆卡车都有一个为其提供服务的团队。每辆卡车也在一条行程中行驶。

我需要能够建立这种关系并展示这一点。我猜这是三元关系?

我做了一些研究并遇到了数据透视表,但我不确定我是否走在正确的轨道上。

我知道M:不允许M关系,但是如果我建模三元关系并通过数据透视表链接它们会更好吗?

3 个答案:

答案 0 :(得分:1)

您不需要任何额外的表格。你可以这样做:

enter image description here

带星号的列是主键。

truck 表有两个外键,它们唯一地定义哪个卡车车队以及卡车行程路线与之相关联。

如果还需要卡车车队只能维修一辆卡车,那么在外键列 truck_team_id 上放一个唯一索引在 truck 表中。

同样,如果还需要卡车行程路线只能由一辆卡车遍历,则在外键列上放置一个唯一索引 truck 表中的truck_trip_route_id

答案 1 :(得分:0)

从描述给出三元关系是有道理的。 有一个卡车有一个团队和一个路线。因此,为每个获取ID的链接表将正常工作。

否则另一种方法是在表之间建立直接链接。 e.g。

Team (table) -> truck_team (link table) -> Truck (table) -> truck_route (link table) -> Route

这实际上取决于您希望表格的形式。包含truckteam_id的{​​{1}}也是另一种方式。

答案 2 :(得分:0)

声明“每辆卡车都有一个团队”听起来像是一个二元关系。 “每辆卡车都在一条行程路线上”也是如此。三元关系就像“每辆卡车每个行程都有一个团队”。