4

複数選択のトリビア ゲームの最も効率的なデータベース スキーマを決定しようとしています。「question_id」、「level」、「question」、「wrong_ans1」、「wrong_ans2」、「wrong_ans3」、「correct_ans」の列を含むスプレッドシートに質問と回答があります。

(id, question, level, is_active)など列を持つ複数のテーブル「questions」と(id, choice, is_correct,)などの列を持つ「question_choices」にデータを分割する必要がありますか?

「user_ans」というテーブルがあるので、ユーザーがプレイした質問とその回答を追跡できます。

どんな助けでも大歓迎です!

4

2 に答える 2

2

私は次のいずれかを行います:

  1. あなたが説明したように、正しい答えを示すためにブール値を持つ単一のテーブルに答えを保管してください。また ...
  2. 回答を 1 つのテーブルに保持し、質問モデルの属性を使用して正解の ID を識別します。これにより、正解は 1 つだけになります。

後者の場合:

Question
  attr_accessible :question, :level, correct_answer_id
  has_many :answers     , :dependent => :destroy
  has_many :user_answers, :through   => :answers

Answer
  attr_accessible :answer, :question_id
  belongs_to :question
  has_many   :user_answers, :dependent => :destroy

User_Answer
  attr_accessible :user_id, :answer_id
  belongs_to :user
  belongs_to :answer

これを少し考えすぎて、同じセットの回答があり、別の質問に対して別の回答が正しいという質問がたくさんある場合は、回答をセット (「青」、「緑」、「」にまとめることができます。 Red") を作成し、質問をセットにリンクします。その場合、質問レベルで正しい答えを示す必要があります。

于 2013-06-10T17:23:59.900 に答える
0

私は次のようにします:

質問モデル

Question
   attr_accessible :question, :level
   has_many wrong_answers
   has_one correct_answer

Wrong_answer
   attr_accessible :answer, :question_id
   belongs_to :question

Correct_answer
   attr_accessible :answer, :question_id
   belongs_to :question
于 2013-06-10T17:09:16.630 に答える