Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中存储调查响应的最佳方式是什么?_Mysql_Database Design_Survey_Wufoo - Fatal编程技术网

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

在MySQL中存储调查响应的最佳方式是什么?,mysql,database-design,survey,wufoo,Mysql,Database Design,Survey,Wufoo,我正在设计一个数据库来存储通过API从我们的调查平台Wufoo收集的调查响应。每个调查都有不同数量的问题。每个调查都有一个Id,每个回复也有一个Id。我希望将数据存储为高效、灵活的数据,以便通过查询同时检索多个问题 一种选择是将其存储为一个包含列的表—Survey\u Id、Response\u Id、Question和Response。i、 e.来自API的每一行响应将是单个表中的多行 另一种选择是有两个表,称为问题和回答。每个表可以有大约50个名为-Q1、Q2、Q3、Q4等的列。然后,我可以

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

一种选择是将其存储为一个包含列的表—Survey\u Id、Response\u Id、Question和Response。i、 e.来自API的每一行响应将是单个表中的多行

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


如果您打算使用数据进行报告,您会选择上述哪一个选项,可能还会选择查看和潜在问题?或者有其他方法来存储调查响应吗?

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

你的第二个选择很好,但会进一步改进。维护两张表格,包括问题和回答

问题表模式

调查编号

问题编号

问题:

响应表模式

回应

调查id对问题表中调查id的引用

问题id对问题表中问题id的引用

回应

假设调查1有20个问题。所以,问题表将有20个条目。每个问题都会在回答表中给出答案

还有一个提示,如果您希望得到大量回复或大量数据集,请避免自动递增主键,因为这将耗尽资源。因此,我在回答表中保留了两个参考调查id和问题id


希望这有帮助

类似于:您的解决方案更接近我的选项1。实际上,条目Id由API返回,实际上是调查中的一系列响应。无论如何,您将如何查询表格,以便在调查中,您可以返回任意两个或三个问题的所有回答,每列一个问题。您可以使用GROUP_by survey_id QUALISE_id,然后在SELECT语句中使用GROUP_CONCAT responses,获得一个问题的所有回答。