在MySQL中存储调查响应的最佳方法是什么?

时间:2017-03-23 12:23:58

标签: mysql database-design survey wufoo

我正在设计一个数据库来存储通过我们的调查平台--Wufoo的API收集的调查回复。每项调查都有不同的问题。每个调查都有一个Id,每个响应都有一个Id。我希望将数据存储为高效且足够灵活,以便通过查询同时检索多个问题。

一种选择是将其存储为包含列的表 - Survey_Id,Response_Id,Question和Response。即来自API的每一行响应将在一个表中包含许多行。

另一个选择是有两个表称为问题和答案。每个表可以有大约50列名为-Q1,Q2,Q3,Q4等。然后,我可以将所有问题(一次)存储在问题表中,对于每个响应,将值存储在响应表中的顺序相同Q1,Q2,Q3等。要检索我可以在读取响应表时使用Question表中的值作为列名的别名,很可能使用存储过程。

如果您要使用数据进行报告,您会选择以上哪个选项,或许还有预期和潜在的问题?或者是否有其他方法来存储调查回复?

1 个答案:

答案 0 :(得分:0)

规范化是数据库设计的最佳方法。

你的第二种选择是好的,但会进一步改善。维护2个表questionsresponses

问题表架构

  

survey_id

     

question_id

     

问题

响应表架构

  

RESPONSE_ID

     

survey_id (问题表中对survey_id的引用)

     

question_id (对问题表中的question_id的引用)

     

响应

我们说调查1有20个问题。因此,questions表将有20个条目。对于每个问题,response表中都会有答案。

还有一个提示,如果您期待大量回复或大数据集,请避免自动增加主键,因为这会耗尽。因此,我在survey_id表中保留了2个引用question_idresponses

希望这有帮助!