我正在设计一个数据库来存储通过我们的调查平台--Wufoo的API收集的调查回复。每项调查都有不同的问题。每个调查都有一个Id,每个响应都有一个Id。我希望将数据存储为高效且足够灵活,以便通过查询同时检索多个问题。
一种选择是将其存储为包含列的表 - Survey_Id,Response_Id,Question和Response。即来自API的每一行响应将在一个表中包含许多行。
另一个选择是有两个表称为问题和答案。每个表可以有大约50列名为-Q1,Q2,Q3,Q4等。然后,我可以将所有问题(一次)存储在问题表中,对于每个响应,将值存储在响应表中的顺序相同Q1,Q2,Q3等。要检索我可以在读取响应表时使用Question表中的值作为列名的别名,很可能使用存储过程。
如果您要使用数据进行报告,您会选择以上哪个选项,或许还有预期和潜在的问题?或者是否有其他方法来存储调查回复?
答案 0 :(得分:0)
规范化是数据库设计的最佳方法。
你的第二种选择是好的,但会进一步改善。维护2个表questions
和responses
。
问题表架构
survey_id
question_id
问题
响应表架构
RESPONSE_ID
survey_id (问题表中对survey_id的引用)
question_id (对问题表中的question_id的引用)
响应
我们说调查1有20个问题。因此,questions
表将有20个条目。对于每个问题,response
表中都会有答案。
还有一个提示,如果您期待大量回复或大数据集,请避免自动增加主键,因为这会耗尽。因此,我在survey_id
表中保留了2个引用question_id
和responses
。
希望这有帮助!