SQL - 如何处理多个多对多关系

时间:2017-09-08 20:39:56

标签: sql database database-design many-to-many relational-database

我试图找到答案,但还没有。我有一个场景,我有4个表。 (我试图简化事情)

People
Activities
Risks
Precautions

这些链接在多个多对多关系中。例如,

一个人可以做多项运动,多人可以做同样的运动。 运动可能有多种风险,多项运动可能会有相同的风险。 风险可以有多种预防措施,多种风险可以采取相同的预防措施。

我看到3种方法可以使用联结表...

1

People ---------
                |- Junction Table
Activities -----
                |- Junction Table
Risks ----------
                |- Junction Table
Precautions ----

2

People ------------------------------------------------
                                                       |- Junction Table
Activities ------------------------                    |
                                   |- Junction Table --
Risks ----------                   |
                |- Junction Table --
Precautions ----

3

People ------------|
Activities --------|-- 1 big junction table
Risks -------------|
Precautions -------|

这就是我被困住的地方。我不知道该怎么做,或者我开始时是不是正确地考虑它。我觉得选项1是要走的路,但我不确定如何从一端查询到另一端。例如......来自一个人,选择与他们相关的预防措施。

2 个答案:

答案 0 :(得分:0)

  

一个人可以做多项运动,多人可以做同样的运动。运动可能有多种风险,多项运动可能会有相同的风险。风险可以有多种预防措施,多种风险可以采取相同的预防措施。

我认为您需要以下表格:

  • 活动
  • 人员活动
  • 风险
  • 活动风险
  • 注意事项
  • 风险预防措施

如有任何进一步的澄清,请不要犹豫。

泰德。

答案 1 :(得分:0)

我会选择选项1并加入查询。 对于示例查询: 从一个人,选择与他们相关的预防措施

您应该通过加入表人员和活动来获取此人的活动,然后加入活动风险,最后加入风险预防措施。最后,您将获得与某人相关的预防措施。