我搜索了论坛,有几篇关于问卷设计的帖子,但我想讨论一个特定的话题。此外,这是一个相当普遍的设计问题。
我想将问卷回复存储到数据库中。一些响应是自由文本(例如 varchar),而其他一些响应是多项选择(例如 FK)。你如何模拟这种差异?
我见过两种方法——(忘记细节)。
方法 A:使用 2 个表。一个用于文本响应,另一个用于多项选择响应。
Table: text_response
some_stuff ----[*]
text ----------[varchar]
Table: mc_response
some_stuff ----[*]
optionID -----[FK to selected option]
*-not relevant to the disccussion... ResponseID, QuestionID, SurveyID, whatever
方法 B: “合并”两个表并根据响应类型仅使用其中一列。
Table response
some_stuff ----[*]
optionID -----[FK to selected option]
text ----------[varchar]
我应该选择哪一个(如果有的话)?为了使讨论保持一般性和对任何人有用,我希望一般目的的利弊,但如果它有助于某些上下文,我会将它用于高度动态的问卷系统(用户可以创建自己的民意调查和查询)。我不太关心性能,我关心代码的简单性和维护。