2011-01-07 13 views
3

アンケートは常に変わる可能性があり、質問自体が長くなる可能性があるので、列名として質問を使用するのは愚かなようです。 アンケートをデータベースに保存するための慣習や実績のある方法はありますか?アンケートをデータベースに保存する効果的な方法は何ですか?

私は(Question-ID、Question)という表を持っていて、質問IDと回答の2番目の表を持っていると考えていました。しかし、この解決策は遅すぎるかもしれません。特定のユーザーと質問に参加するためには3回目の参加が必要になるからです。

答えて

2

結合にはどのような問題がありますか?これは、リレーショナルデータベースの全要素、つまり結合です。

質問を1つのテーブルに格納します。

別の表に質問の回答を格納します。

答えがあらかじめ定義されており、複数の質問に共通する場合は、共通の回答を独自のテーブルに格納し、AnswerIDを持つQuestionIDを持つ別のテーブルを作成します。

ジョインを恐れず、リレーショナルデータベースの一部です。結合がなければ、フラットファイルを処理するだけです。

+0

それは本当です。しかし、なぜ誰もが今ジョイントで叫んでいるのですか? – TheOne

+3

@ Absolute0 - おそらくデータベースを理解していない人です。なぜあなたはリレーショナルデータで悲鳴を上げますか?それは理にかなっています!これらの怒っている動物に私を向ける? – JonH

+0

googleアプリエンジン: - Pその他いくつか – TheOne

0

私はアンケートの情報をモデル化するのが最善の答えだと思います。アンケート自体をモデリングしようとはしないでください。アンケートは単にデータベースの内容を収集する手段に過ぎません。

0

私はハッシュマップを使って質問を表す別のクラス/ファイルを持つのが最善であると思います。そしてそれを他のクラスで利用することができます。データベースに質問を格納する必要はまだありません。ハッシュマップにロードされるためです。

0

私は私の答えで少し遅れましたが、多分誰かがこの情報を役に立つと思うでしょう。

私はJonHと完全に同意しています。共通のソリューションをより明確にするために実装した方法の例を示します。

最も一般的なテーブルは以下のとおりです。

  1. 質問:ID(PK)、質問、説明、注文番号、セクションID(QuestionsSections.IdにFK)、AnswerTypeId(AnswerType.IdにFK)
  2. 回答:ID(PK)、回答、SubmitDate、ユーザーID(Users.IdにFK)、QuestionId(Questions.IdにFK)
  3. アンケート:ID(PK)、名前、説明
  4. QuestionnaireQuestions:QuestionnaireId(PK、FK質問票へ)、質問票(PK、質問票へのFK)
  5. QuestionsSections:ID(PK)、名前、説明、注文番号
  6. AnswerType:ID(PK)、タイプ、

はまた、あなたがオプションで用意答えのための特別なテーブルを作成することを好むことができます説明(例えば、ラジオ、チェックボックスなど)、またはアクティビティトラッキングテーブルを使用する必要があります。以下は


参考にすることができ、リンク(アップからダウンに読み取るための提案された順序)は次のとおりです。

関連する問題