1. ホーム
  2. sql

[解決済み] アンケートのためのデータベース設計【終了しました

2022-05-08 16:42:15

質問内容

回答がデータベースに保存されるようなアンケートを作成する必要があります。データベースでこれを実装する最善の方法は何か、具体的には必要なテーブルについて考えています。アンケートはさまざまなタイプの質問を含んでいます。たとえば、コメント用のテキストフィールド、複数選択式の質問、複数の回答を含む質問 (該当するものにチェックを入れるなど) などです。

2つの解決策を思いつきました。

  1. 巨大なテーブルを作成し、その中に 各アンケートの回答 の提出が必要です。各カラムは の答えに対応する。 例えば、SurveyID、Answer1、Answer2、Answer3、Answer4、Answer5、Answer6。 回答2, 回答3

    この方法がベストだとは思いませんが 質問数が多いので このアンケートでは アンケートが変更された場合、柔軟に対応できる。

  2. もう一つ思いついたのは 質問テーブルと回答テーブルを作成する テーブルがあります。質問テーブルには のすべての質問が含まれています。 アンケート 回答テーブルには アンケートの個々の回答。 各行が質問にリンクしている。

    簡単な例です。

    tblSurvey : サーベイID

    tblQuestion : QuestionID。 アンケートID QuestionType, Question

    tblAnswer : AnswerID。 ユーザーID , 質問ID 回答

    tblUser : ユーザーID、ユーザー名

    この場合の問題点は 回答が大量にある可能性があり、その場合 は、Answerテーブルをかなり巨大化させます。 そのため、このテーブルが巨大化します。 を使用します。

アイデアや提案があれば、ぜひお願いします。

どのように解決するのですか?

2 のモデルで問題ないと思いますが、質問とあらかじめ用意された回答(オファー回答)を保存し、別のアンケートで再利用できるようにする、より複雑なモデルを見てみましょう。



- 1つのアンケートで多くの質問をすることができ、1つの質問を多くのアンケートで(再)使用することができます。

- 1つの(あらかじめ用意された)回答が、多くの質問に対して提供されることがあります。1つの質問に対して、多くの回答を提供することができます。1つの質問に対して、異なるアンケートで異なる回答を提供することができます。異なるアンケートで、異なる質問に対して回答を提供することができます。デフォルトでその他を選択した場合、その人の回答は Answer.OtherText に記録されます。

- 1人が多くのアンケートに参加することができますが、1人が1つのアンケートの特定の質問に回答できるのは1回だけです。