Database 什么';将调查问卷存储在数据库中的有效方法是什么?

Database 什么';将调查问卷存储在数据库中的有效方法是什么?,database,join,scalability,Database,Join,Scalability,由于调查问卷总是会变化,而且问题本身可能很长,所以将问题用作列名似乎很愚蠢。 在数据库中存储问卷是否有任何惯例或经验证的方法 我在考虑用一个表(问题ID,问题),然后用第二个表来显示问题ID和答案。但此解决方案可能太慢,因为需要第三次加入才能将问题与特定用户加入。加入有什么问题?这就是关系数据库的全部要点,连接 将问题存储在一个表中 将问题答案存储在另一个表中 如果答案是预定义的,并且在多个问题中是通用的,则将通用答案存储在他们自己的表中,并创建另一个具有问题ID和答案ID的表 不要害怕连接,它

由于调查问卷总是会变化,而且问题本身可能很长,所以将问题用作列名似乎很愚蠢。 在数据库中存储问卷是否有任何惯例或经验证的方法


我在考虑用一个表(问题ID,问题),然后用第二个表来显示问题ID和答案。但此解决方案可能太慢,因为需要第三次加入才能将问题与特定用户加入。

加入有什么问题?这就是关系数据库的全部要点,连接

将问题存储在一个表中

将问题答案存储在另一个表中

如果答案是预定义的,并且在多个问题中是通用的,则将通用答案存储在他们自己的表中,并创建另一个具有问题ID和答案ID的表


不要害怕连接,它们是关系数据库的一部分。如果没有加入,你只是在处理平面文件。

我认为最好的答案是对问卷所涉及的信息进行建模。不要试图对问卷本身进行建模-问卷只是用来收集数据库内容的手段。

我认为最好使用hashmap创建一个单独的类/文件来表示问卷。然后其他类可以利用它。我真的不认为有必要将问题存储在数据库中,因为它们仍然会被加载到hashmap中。

我的答案有点晚了,但也许有人会发现这些信息很有用

我完全同意乔恩的看法。我只举一个例子,说明我是如何实现它的,以使通用解决方案更加清晰

最常见的表格有:

  • 问题:Id(主键),问题,描述,订单号,部分Id(FK到QuestionsSections.Id),应答类型Id(FK到应答类型.Id)
  • 答案:Id(主键),答案,提交日期,用户Id(FK to Users.Id),问题Id(FK to Questions.Id)
  • 问卷:Id(PK)、姓名、描述
  • QuestionNaired:QuestionnaireId(PK,FK到questionly.Id),QuestionId(PK,FK到Questions.Id)
  • 问题选项:Id(主键)、名称、描述、订单号
  • 应答类型:Id(主键),类型,描述
  • 此外,您还可以根据应用程序的需要,为可选答案(如收音机、复选框等)或活动跟踪表创建特殊表格


    以下是有用的链接(建议从上到下阅读的顺序):


    没错。但为什么现在每个人都在对加入尖叫?@Absolute0-他们可能是不懂数据库的人。为什么你会对关系数据大喊大叫,这才有意义!把我引向这些愤怒的动物,好吗?@Absolute0-不,说真的,如果没有加入,你真的会留下毫无意义的数据。它没有关系,就像你出生时没有父亲一样(上帝是个坏例子)。但也有人可能过度规范数据,这反过来会影响性能。但这完全取决于开发人员,因为他/她最终比我们更了解他们的数据。对于关系数据,我可以通过获取一个实体/对象并以某种方式将其与另一个实体关联来理解问题。