我将要开发一个数据库,用于存储带有不确定数量问题的问卷。该数据库将与服务器通信,用于注册答案并在需要时检索它们。对于每个用户,我需要存储每个问题的答案,这是服务器端必不可少的。
结构应为:
QUESTIONNAIRE:
Questionnaire n.1 (Question1,Question2,...,QuestionN)
Questionnaire n.2 (Question1,...,QuestionM)
...
USER:
User1
User2
...
ANSWERS
User1 - Questionnaire n.1 (AnswToQuestion1, AnswToQuestion2...AnswToQuestionN)
User2 - Questionnaire n.1 (AnswToQuestion1, AnswToQuestion2...AnswToQuestionN)
User2 - Questionnaire n.2 (AnswToQuestion1, AnswToQuestion2...AnswToQuestionM)
鉴于上述规格,我面临两个主要问题:
我曾考虑过2种不同的解决方案来解决此类问题,但我真的可以在2种方案之间做出决定。
该想法基本上是将用户存储在USER
表中,并且为每个用户存储一个ANSWER
,这是指特定的调查表。这给出了类似“用户x已回复调查表”的信息。然后,唯一ID id:ANSWER
将用于标记MARKETINGANSWER
中的给定答案。 QUESTIONNAIRE
表将保存调查表的每个实例,并提供唯一的ID来链接MARKETINGQUESTION
表中的每个不同问题。最后,唯一ID id:MARKETINGQUESTION
将用于将问题映射到给定答案。
什么不能说服我:这具有太多的间接层。我不喜欢MARKETINGANSWER
和MARKETINGQUESTION
的强制连接,但是我需要一种映射它们的方法。此外,我需要ANSWER
的常规表,因为它提供了有关问卷的一些常规信息(隐藏的列)。
然后,我想到了第二种方法:创建一个唯一的ANSWER
和QUESTIONNAIRE
表,该表将包含在TEXT
属性中,由一系列特殊的转义字符分隔的答案/问题(例如#&
)。这将破坏映射,但是可以在Web应用程序中实现-我正在考虑对问题/答案的数量进行控制,可以确保在问卷调查表中确定排序并提交到数据库。此外,该架构将更加简洁。但是,我会在数据库架构中失去一致的表示形式。
如果可以的话,我想提出一些建议。我很确定有些简单的事情我无法完全掌握。 预先谢谢你。