【问题标题】:Surveys and Answers, relation on many-to-many调查和答案,多对多关系
【发布时间】:2017-02-09 03:34:49
【问题描述】:

我有如下数据库方案(不知道是不是完美但我觉得还可以?)

这是一个用户有许多调查的系统,用户在 Survey_Answers 表中提供问题的答案。

现在一个用户可以有多个调查,这是相同的问题,但在一年中的晚些时候,他们必须再次填写调查。

我快到了,我只是想知道如何将答案与调查联系起来。我是否应该在survey_answers 和 user_surveys 之间建立关系.. 从而在 user_surveys 表中添加一个 id

或者您认为与调查表建立关系可以吗?我不确定哪一个是正确的。

我在第二张截图中概述了两种可能性。

期待您的回复! 谢谢。

【问题讨论】:

标签: mysql database database-design relational-database


【解决方案1】:

这可能取决于您的系统最有可能/最频繁地导航该关系的方式。

如果您更有可能查看用户的答案并说 - 嘿,让我看看这个问题何时得到回答,作为过时调查的一部分,那么您应该加入 user_surveys(我假设您是storage 将匹配 user_surveys 中的 user_id)

如果您更有可能查看用户的回答并说 - 嘿,这个问题属于哪个调查,那么您应该加入调查。

无论您使用哪种联接,您仍然可以回答任一问题,这只是一个更优化性能的问题(尝试回答最常见查询时的表联接更少)。

实际上可能没有多少,所以你总是可以扔硬币:)

【讨论】:

  • 很好的答案,非常感谢! db 方案还可以吗?我总是不确定我是否选择了正确的方式来处理这一切
  • 哦,将 Journey_id 添加到用户表中会不会是个好主意?例如在创建新用户时。我需要确保他将遵循的所选旅程的现有步骤将添加到 user_steps。在那我知道什么用户有什么旅程,对吧?
  • 这取决于一个用户是否可以有许多旅程并且许多用户可以遵循相同的旅程,那么您需要在用户和旅程之间建立一个多对多表,只保存 user_id 和 Journey_id(可能带有一个活动标志添加以显示用户当前正在进行的旅程)。 Schema 看起来不错,但如果不了解所有用例,当然不可能说出来。
猜你喜欢
  • 1970-01-01
  • 2018-04-13
  • 2023-03-09
  • 2011-10-22
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2014-02-02
  • 2018-12-06
相关资源
最近更新 更多