我需要一对多或多对多关系吗?

时间:2018-12-03 15:42:17

标签: sql model many-to-many one-to-many rdbms

作为this question的一种续集或扩展,我开始想知道我是否打算在我的联系模型和兴趣模型之间建立多对多关系,并想尝试对此事有意见。

总结或澄清,我有:

联系方式

  • 包含一个ID和一个或多个用户联系信息字段(对问题不重要)
  • 包括与该联系人相关联的一个或多个兴趣列表,该列表是从数据库的兴趣对象列表中选择的
  • 可以选择任意数量的兴趣,最多包括所有可用兴趣,但是不能一次选择同一兴趣。

兴趣

  • 取自数据库定义的兴趣列表(如果可能,不希望将选项列表不硬编码到模型,视图或控制器中)
  • 主要用于为联系人列表提供过滤条件(例如“返回所有兴趣包括(...)的联系人”)
  • 每个兴趣可以与任意数量的联系人关联/选择,但不一定需要在视图中引用所有关联的联系人

所需视图

  • 创建联系人-向用户提供所有可用兴趣的列表,用户应该能够选择一个或多个与其联系人相关联的内容
  • 联系人索引-用户界面包括按钮/复选框列表,每个可能的兴趣项一个;通过选择这些联系人中的一个或多个,用户/管理员可以选择根据联系人的选择兴趣是否包括他们指定的一个或多个兴趣来过滤返回到视图的联系人。

现在,我认为我对如何对许多这些操作背后的逻辑进行编码有一个很好的主意。我 肯定不知道的是,这是否需要Contact和Interest对象之间的一对多或多对多关系。

我意识到我需要针对正确建模的具体细节提出另一个问题,但是目前,上述标准描述了哪种关系:一对多或多对多?

1 个答案:

答案 0 :(得分:1)

多对多在这里是正确的。您自己说过:联系人...“可以选择任意数量的兴趣,最多包括所有可用兴趣”,而兴趣...“可以由任意数量的联系人关联/选择”。关系的任何一方都不仅限于一个关联。

让我们说一个联系人只能选择一个兴趣,但是无论其他联系人如何选择,联系人都可以选择他们想要的任何兴趣。那么这将是一对多的,因为联系人只能具有一个兴趣,但是一个兴趣可以与许多用户相关联。