建模多次重复的一对多关系

时间:2018-11-28 11:38:37

标签: database database-design relational-database relationship

我有三个表InitiativeCategoryForecasts。在所有表中,该关系是一对多。

Initiative可以有多个Category可以有多个Forecasts

Initiative可以重复出现,也可以不重复使用,Category名称可以不同。例如,对于重复的Initiative,它将具有一组特定的Categories,该集合将针对所有Initiatives的重复类型进行重复。

预测将在一年中的几个月内进行分类。 目前就是这样,小提琴是here

enter image description here

这种方法的作用是,对于每种特定类型的计划,尽管类别名称相同,却会重复多次。

与此有关的另一个问题是,当我们需要添加特定类别的计划时,我们将必须维护具有所有计划和所有类别的另一个AllInitiative表,以将它们最初映射到Category表。之后,可以将预测添加到新添加的计划和类别中。

如何更好地设计此结构,以使我有一个AllInitiative表,其中所有类型的计划都恰好一次,而AllCategory表中则包含每种计划类型的类别列表。

并使用另一个表来跟踪特定类型的计划和类别,而不必在特定类型的计划的每个实例之间复制类别名称。

1 个答案:

答案 0 :(得分:0)

您可以拥有一个Initiative表,其中所有计划一次,Category另一个计划,对于1-n关系,您需要一个链接表,例如Initiative_Category主动性和类别的外键。

在此表中,您可以将每个计划与相应的类别一起存储。

    +---------------+-------------------+
    | initiative_id |    category_id    |
    +---------------+-------------------+
    |       1       |         2         |
    |       1       |         3         |
    +---------------+-------------------+