我有一个很长的 html 页面,几组问题分为小部分(一页大约有 15 个子部分),问题总数约为 100 个问题:从输入、多选、复选框、单选按钮、文本区域、和文件上传。一个问题可以包含许多答案,这些答案可以从一组复选框、一组选择列表、一组多选或所有这些组合成一个答案中获得。我以为我会在下面使用这个数据库设计,但最近发现这毕竟不是一个好方法。
选项 1:旧方法(1 桌)
表格:问卷
选项 2:新方法(2 个表)
表格:问题
表:答案
还是选项3?
Oli*_*bes 18
绝对不要硬编码你的问卷。使用关系数据库或 xml 文件。我提出以下表格
Questionnaire
: 问卷的一般描述。标题、调查名称、问卷发布日期、版本等。
Section
:由问卷组成的部分。章节编号、章节标题、描述。
Question
: 属于一个部分的问题。问题编号、问题文本、描述、问题类型(文本、多项选择等)。
Question_Choice
:属于与单个复选框、单选按钮等对应的问题的可能答案。选择文本、选择编号、顺序。
Respondent
: 回答问题的人。个人资料、用户编号。
Interview
:属于一名受访者和一份问卷的访谈或测试或调查(取决于问卷的性质)。如果受访者始终只能回答一份问卷(或者如果调查是匿名的),则此表已过时并可与受访者表合并。面试日期(或测试日期或调查日期)、面试官(如果适用)。
Answer
:属于一次访谈(或受访者,见上文)和一个问题的答案。回答文本(对于文本类型的问题),选择(对于单选按钮)。
Answer_Choice
:当可以勾选多个选项时,选项属于一个答案和一个 Question_Choice。
这是一种非常规范的方法;但是,您可以决定将选项连接到一个字符串中,或者将它们存储为位模式,或者根据您的需要以其他方式简化它。
小智 6
你需要几张桌子,
1 - 问题(问题 id、输入类型、可见、问题类型、问题文本、预期答案....)
2 - 答案(问题 ID、用户 ID、活动 ID、答案....)
3 - 用户(用户ID,用户名......)
4 - 保存问答活动的表格(活动 id、数据/时间、用户 id)
您可能还希望有一个表格,用于指定应应用于每个活动的问题 - 按用户分组或问题集合。外键/主键将是多个表中具有相同名称的列,并且应该被索引。
如果您使用此结构,您应该能够添加问题或用户或更改答案,而无需更改架构或演示代码 - 确保演示代码是在运行时动态创建的 - 您只需要添加一条记录在适当的地方。
这种方法最初的开发时间可能比硬编码方法要长,但维护起来要简单得多,因为您只需要更改数据即可更改行为。
(提示,要创建您的表示层,您需要一个查询来获取要显示的适当问题,然后遍历此结果集并调用一个方法在屏幕上呈现问题,选择的方法适合于该问题的介绍 [文本框、广播组等])