在 MySQL 中存储调查回复的最佳方式是什么?
What is the best way to store survey responses in MySQL?
我正在设计一个数据库来存储通过 APIs 从我们的调查平台 - Wufoo 收集的调查回复。每个调查都有不同数量的问题。每个调查都有一个 ID,每个响应也有一个 ID。我想高效且灵活地存储数据,以便通过查询同时检索多个问题。
一种选择是将其存储为 table,包含列 - Survey_Id、Response_Id、问题和响应。即来自 API 的每一行响应将在单个 table.
中包含许多行
另一种选择是有两个 table 称为问题和响应。每个 table 可以有大约 50 个名为 Q1、Q2、Q3、Q4 等的列。然后我可以将所有问题(一次)存储在问题 table 中,并为每个响应存储值在 Q1、Q2、Q3 等相同序列的响应 table 中。要检索,我可以在读取响应 table 时使用问题 table 中的值作为列名的别名,最有可能使用存储过程。
如果您打算使用这些数据进行报告,您会选择以上哪个选项,并且可能预见到潜在的问题?还是有其他方法来存储调查回复?
规范化是数据库设计的最佳方法。
你的第二个选项不错,但会进一步改进。维护 2 tables questions
和 responses
.
问题table架构
survey_id
question_id
question
响应table架构
response_id
survey_id (references to survey_id in questions table)
question_id (references to question_id in questions table)
response
假设调查 1 有 20 个问题。因此,questions
table 将有 20 个条目。对于每个问题,都会在 response
table.
中找到答案
再提示一下,如果您期望大量回复或大型数据集,请避免自动递增主键,因为这会耗尽。因此,我在 responses
table.
中维护了 2 个引用 survey_id
和 question_id
希望对您有所帮助!
我正在设计一个数据库来存储通过 APIs 从我们的调查平台 - Wufoo 收集的调查回复。每个调查都有不同数量的问题。每个调查都有一个 ID,每个响应也有一个 ID。我想高效且灵活地存储数据,以便通过查询同时检索多个问题。
一种选择是将其存储为 table,包含列 - Survey_Id、Response_Id、问题和响应。即来自 API 的每一行响应将在单个 table.
中包含许多行另一种选择是有两个 table 称为问题和响应。每个 table 可以有大约 50 个名为 Q1、Q2、Q3、Q4 等的列。然后我可以将所有问题(一次)存储在问题 table 中,并为每个响应存储值在 Q1、Q2、Q3 等相同序列的响应 table 中。要检索,我可以在读取响应 table 时使用问题 table 中的值作为列名的别名,最有可能使用存储过程。
如果您打算使用这些数据进行报告,您会选择以上哪个选项,并且可能预见到潜在的问题?还是有其他方法来存储调查回复?
规范化是数据库设计的最佳方法。
你的第二个选项不错,但会进一步改进。维护 2 tables questions
和 responses
.
问题table架构
survey_id
question_id
question
响应table架构
response_id
survey_id (references to survey_id in questions table)
question_id (references to question_id in questions table)
response
假设调查 1 有 20 个问题。因此,questions
table 将有 20 个条目。对于每个问题,都会在 response
table.
再提示一下,如果您期望大量回复或大型数据集,请避免自动递增主键,因为这会耗尽。因此,我在 responses
table.
survey_id
和 question_id
希望对您有所帮助!