建模问卷答案

时间:2011-12-15 20:02:46

标签: database relational-database

想知道在保存回复方面建立调查问卷的最佳方法是什么。所以我认为保存它的理想方法就是这样一个表:

ID_pk
RESPONSE_ID
question_id

所以每个条目都是一个问题的答案。问题是,当我在这张桌子上搜索时,表现会很糟糕。我想知道我是否需要在侧面创建另一个表来帮助我提高性能。有任何想法吗?

由于

2 个答案:

答案 0 :(得分:2)

最好的方法取决于您需要多大的灵活性。你有多项选择题吗?仅限数字的questinos用于计算?真/假问题等。

使我们能够实现最大灵活性的方法具有以下结构:

表:调查

  • SurveyId PK
  • Surveyname

表格问题类型

  • QuestionType PK
  • QuestionTypeText(即“多项选择”,“真/假”等)

表格问题

  • SurveyId FK
  • QuestionId PK
  • QuestionText
  • QuestionType

表格答案(仅包含多项选择题的答案)

  • 答案PK
  • QuestionId FK
  • AnswerText

表格结果

  • ResultId PK
  • Surveyid FK
  • QuestionId FK
  • QuestionType(从问题中复制)
  • MultipleChoiceAnswerid(除非是多重问题,否则为空,FK另有回答)
  • BooleanResult(如果QT =布尔值,否则为null)
  • NumericResult
  • FreeFormTextResult

然后有很多编程逻辑来处理显示。

实际上,我们真正的灵魂进一步发展并将问题分组到问题组中,以便将类似的问题保存在一起,但这个简化的版本应该会给你一些想法。这是相对复杂的,但我看到专业调查软件更是如此,但遵循类似的模式。它对我们来说也很好。通过创建新的SurveyType,我们已经能够在几种情况下重用它。

答案 1 :(得分:1)

这个想法是,任何可以在表格中复制的内容都应该被拉出到另一个表格中。

  • 问题会重复,因此您需要questions表格
  • 可以复制响应,取决于这是多项选择还是填空等等。
  • 价值可能重复,但取决于回应
  • 的答案

所以,我想说要考虑你的调查问卷。考虑在db中多次保存的内容,然后从中进行标准化。

不要担心性能 - 正常化会对它造成伤害。