sql - 我需要一对多还是多对多的关系?
问题描述
作为这个问题的一种续集或扩展,我开始怀疑我是否打算在我的联系人和兴趣模型之间建立多对多关系,并想尝试就此事获得第二意见。
总结或澄清,我有:
接触
- 包含一个 ID 和一个或多个用户联系信息字段(对问题不重要)
- 包括与该联系人关联的一个或多个兴趣的列表,从数据库中的兴趣对象列表中选择
- 可以选择任意数量的兴趣,最多并包括所有可用的兴趣,但不能多次选择同一个兴趣。
兴趣
- 取自数据库定义的兴趣列表(如果可能,不希望将选项列表硬编码到模型、视图或控制器中)
- 主要用于为联系人列表提供过滤条件(例如“返回所有兴趣包括 (...) 的联系人”)
- 每个兴趣可以与任意数量的联系人关联/选择,但不一定需要在视图中引用所有关联的联系人
所需的视图
- 创建联系人 - 向用户提供所有可用兴趣的列表,用户应该能够选择一个或多个与他们的联系人相关联
- 联系索引 - UI 包括按钮/复选框列表,每个可能的兴趣都有一个;通过选择其中一项或多项,用户/管理员可以选择过滤哪些联系人返回到视图,根据他们选择的兴趣是否包括他们指定的一个或多个兴趣
现在,我想我对如何编写许多这些操作背后的逻辑有了足够的了解;我不确定的是这是否需要联系人和兴趣对象之间的一对多或多对多关系。
我意识到对于正确建模的细节,我需要另一个问题,但现在上述标准描述了哪种关系:一对多或多对多?
解决方案
多对多在这里是正确的。您自己说过:联系人...“可以选择任意数量的兴趣,最多并包括所有可用的兴趣”,并且兴趣...“可以与任意数量的联系人关联/选择”。关系的任何一方都不限于一个关联。
假设一个联系人只能选择一个兴趣,但无论其他联系人的选择如何,联系人都可以选择他们想要的任何兴趣。这将是一对多的,因为一个联系人只能有一个兴趣,但一个兴趣可以与许多用户相关联。
推荐阅读
- c# - 读取代码中任意位置的串口
- python - 使用 LSTM 进行预测
- php - 运行 npm run dev 后得到空的 app.js 文件
- qiskit - 在创建量子电路时,我遇到了这个难题,哪个电路更适合二元运算符
- xslt - 如何格式化没有分隔符的数字
- r - R的'randomForest'库的'rfcv()'函数中的'mtry'
- java - 如果选中某些按钮,则加载不同的场景
- delphi - delphi (RIO 10.3) 可以在运行时访问组件图标(从包二进制资源?)
- angular - 在 FormData 中上传文件时 HttpHeaders 的 ContentType
- yeoman - 使用 yeoman 生成的代码创建的 .yo-repository 目录的目的是什么?