1

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

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

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

如果您打算使用数据进行报告,您会选择上述哪个选项,并且可能预见到潜在的问题?还是有其他方法来存储调查回复?

4

1 回答 1

2

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

您的第二个选项很好,但会进一步改进。维护 2 张桌子questionsresponses.

问题表架构

调查ID

question_id

问题

响应表模式

response_id

调查 ID (在问题表中对调查 ID 的引用)

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

回复

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

还有一个提示,如果您期待大量回复或大型数据集,请避免自动递增主键,因为这会耗尽。因此,我维护了 2 个参考文献和survey_id表格。question_idresponses

希望这可以帮助!

于 2017-03-23T13:07:22.663 回答