【问题标题】:Survey relational database table schema调查关系数据库表架构
【发布时间】:2014-02-07 22:16:02
【问题描述】:

我有一个包含 400 个问题的表格和一个用户表(可能有 100 万)和他们的组(他们都属于不同规模的用户组)。每个用户都必须回答所有问题。将这些用户分组在一起是为了针对彼此进行分析。这些组可以是各种大小。

我应该如何记录每个用户的答案,以便我可以根据他们的组分析他们的答案?

如果我只是为每个用户复制问题,这将是一个笨重的大表。 “答案”表的大小约为 400 万,只有 1000 个用户。 如果我给每个问题一个 ID,那么也许可以做一些更聪明的事情?

(不确定这是否是此类理论问题的正确 Stack 论坛)

【问题讨论】:

  • 不,这不是提出此类问题的正确堆栈论坛。另外,尽管我很想帮助您,但我没有看到任何努力,至少在您尝试解决您的问题的帖子中。我不认为堆栈是这样制作的。
  • 谢谢。这不是一个需要解决的问题,而是一个我不知道答案的最佳实践问题。

标签: sql database


【解决方案1】:

我会为用户、组、问题和答案创建一个单独的表格。

您可能需要考虑在 Answers 问题中添加 GroupID,以及帮助强制实施 RI,它将允许您直接加入 answer 的组,为您节省加入并帮助索引。

通常,您可以通过两种方式为答案表建模,或者每行有一个答案,或者有一个非常宽的表,每个用户每个问题都有一列。就您个人而言,当您谈论 400 个问题时,我什至不会考虑第二个选项 - 如果您决定更改问题,它还会为您提供更大的灵活性。

您可能希望使用reporting databases 来确保您的表现是可以接受的。

对于您正在查看的大量答案,您需要确保您的数据库是properly indexed

【讨论】:

  • 答案表中的列是什么?
  • 我想到了“Col per question/user answer per row”的解决方案,但你是对的,它很狡猾。您的第一个解决方案与我最初的问题可能解决方案相同;为每个用户复制问题(除了您使用问题 ID)和广告答案 col?不要忘记它对每个用户的相同问题集。用户是分组的,但每个用户回答所有问题,他们不作为一个组回答。
  • 只有 1000 个用户的“答案”表解决方案非常庞大。我正在使用 mySql 是否可以接受 10,000 个用户的 4000 万行?
  • 如果替代方案是 400 列的表,是的,这是可以接受的!一个经过良好调整的 SQL 数据库在这种行数上应该不会有太多麻烦。但是,如果您打算进行大量数字运算,那么报告数据库可能不是一个坏主意
  • 嗨 Liath,感谢您的所有回复,您帮了大忙。我给你的例子不是编码要求的开始和结束,所以现成的解决方案无济于事,例如surveymonkey。
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2012-07-10
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多