2

調査Webアプリケーションがあります。調査には複数の選択肢がある質問があります。多肢選択問題への回答は、他の質問の回答に依存する場合があります。

例:

Question 1 has choices: HP, Acer, Samsung, Lenovo
Question 2 has choices: Android, Ubuntu, iOS, Windows
Question 3 has choices: Ubuntu, OS X, Windows
Question 4 has choices: Adidas, Nike, Puma

質問4は、質問1、2、および3の回答の組み合わせによって異なります。

例1:

人が答えた場合:質問1 = "HP"、質問2 = "Ubuntu"、質問3 = "OS X"; 質問4は自動的に「プーマ」に設定されます

例2:

人が答えた場合:質問1 = "Acer"、質問2 = "Ubuntu"、質問3 ="Ubuntu"; 質問4は自動的に「アディダス」に設定されます

*どちらの例も同じロジックです。

一般に、一部の調査質問の回答は、他の調査質問の回答に依存する場合があります。

その目的のためにデータベースをどのように設計/モデル化しますか?

これは私が作成した最初のテーブル関係です(自由に変更してください):

Users: user_id
Questions: question_id
Choices: choice_id, question_id
Answers: answer_id, user_id, question_id

追加情報:

私が考えている管理者ユーザーインターフェイスのプロセスは次のとおりです。

1. The admin creates several independent questions (questions which have answers independent of other questions' answer)
2. The admin creates a dependent question, selects one or many questions which he created earlier, selects a combination of answers from those question (just like in examples 1 and 2 above) and then sets an answer for the dependent question based on those combination of answers.
... The admin proceeds creating several more questions.

編集:

@MahmoudGamalのアイデアをありがとう。私はあなたのデザインに基づいた何かを作成しました:

 Combinations table
 ID
 question_id # the dependent question's id
 choice_id # the automatic answer based on the combination of other answers

 Answer Combinations table
 ID
 combination_id
 question_id # the question that is depended upon by the dependent question
 choice_id # the choice that will be used for the combination

したがって、1つの質問に対して複数の組み合わせを使用できます。例:質問4で複数の組み合わせを受け入れたい場合。1つの組み合わせは異なる答えを持っています。

 Answer Combinations table
 ID     combination_id     question_id     choice_id
 1      1                  1               1
 2      1                  2               2
 3      1                  3               3
 4      2                  1               2
 5      2                  2               2
 6      2                  3               1

そして、Combinationsテーブルには

 Combinations table
 ID     question_id     choice_id
 1      4               4
 2      4               3

私にはかなりきれいに見えます。どう思いますか?

PS:許してください、しかし私はStack Overflowに不慣れで、まだ自分の道を見つけています。

4

2 に答える 2

0

これがあなたの質問から理解できるシナリオです:

管理者は、前の質問の回答と別の質問の関係を指定します。この条件に基づいて、この質問はこの関係に基づいて自動的に回答し、この論理関係は手動で指定されます。したがって、このためには、さらに2つのテーブルが必要になります。

PreviousQuestionsAnswers

  • QuestionId
  • PreviousQuestionId
  • PreviousAnswerID

QuestionPreAnswer

  • QuestionId
  • AnswerId

例えば:

人が答えた場合:質問1 = "HP"、質問2 = "Ubuntu"、質問3 = "OS X"; 質問4は自動的に「プーマ」に設定されます

次に、これら2つのテーブルは次のようになります。

PreviousQuestionsAnswers

QuestionId PreviousQuestionId PreviousAnswerId
    4              1                 1
    4              2                 2
    4              3                 3

QuestionPreAnswer

QuestionId AnswerId
    4         4

注:Answersこれらのデータは管理者によって事前に入力されているため、その調査を行うことになっているOPの後のフロントエンドアプリケーションから、すでに入力されているはずの前の質問に入力した回答と一致します。表に事前定義された条件を使用して、そのPreviousQuestionsAnswers場合は、選択肢を使用して質問を設定しQuestionPreAnswerます。

于 2013-01-13T07:33:44.223 に答える
0

私の英語を許してください。:)私の考えも...あなたは前提条件の答えのために新しいテーブルを作成しなければならないでしょう。

PreAnsテーブルのサンプル

q_id = 2
pre_qid = 1
pre_ans = 3
your_ans = 2

次に、正しい事前回答で回答されているかどうかをPreAnsテーブルで確認します。

ただ試してみてください:)希望が役立つでしょう

于 2013-01-13T08:22:05.210 に答える