【发布时间】:2011-06-05 07:46:57
【问题描述】:
由于调查问卷总是会发生变化,而且问题本身可能很长,因此将问题用作列名似乎很愚蠢。 是否有任何惯例或经过验证的方法可以将问卷存储在数据库中?
我正在考虑有一个带有 (Question-ID, Question) 的表,然后是第二个用于问题 ID 和答案的表。但是这个解决方案可能太慢了,因为需要第三次加入才能加入特定用户的问题。
【问题讨论】:
标签: database join scalability
由于调查问卷总是会发生变化,而且问题本身可能很长,因此将问题用作列名似乎很愚蠢。 是否有任何惯例或经过验证的方法可以将问卷存储在数据库中?
我正在考虑有一个带有 (Question-ID, Question) 的表,然后是第二个用于问题 ID 和答案的表。但是这个解决方案可能太慢了,因为需要第三次加入才能加入特定用户的问题。
【问题讨论】:
标签: database join scalability
加入有什么问题?这就是关系数据库的全部意义,即联接。
将问题存储在一个表格中。
将问题答案存储在另一个表中。
如果答案是预定义的,并且在多个问题中很常见,则将常见答案存储在他们自己的表中,并创建另一个表,其中包含 QuestionID 和 AnswerID。
不要害怕连接,它们是关系数据库的一部分。如果没有连接,您只是在处理平面文件。
【讨论】:
我认为最好的答案是对问卷所涉及的信息进行建模。不要尝试对问卷本身进行建模 - 问卷只是用于收集数据库内容的手段。
【讨论】:
我认为最好有一个单独的类/文件来表示使用哈希图的问卷。然后其他类可以使用它。我真的不认为有必要将问题存储在数据库中,因为它们仍会被加载到哈希图中。
【讨论】:
我的回答有点晚了,但也许有人会发现这些信息很有用。
我完全同意 JonH 的观点。我将仅举例说明我如何实现它以使通用解决方案更加清晰。
最常见的表格是:
此外,您还可以根据应用程序的需要,为可选答案(例如收音机、复选框等)或活动跟踪表创建特殊表格。
以下是可能有用的链接(建议从上到下的阅读顺序):
【讨论】: