多选Trivia游戏的数据库架构

时间:2013-06-10 16:01:13

标签: ruby-on-rails database ruby-on-rails-3 database-design database-schema

我正在尝试为多选琐事游戏确定最有效的数据库架构。我在电子表格中提供了问题和答案,其中包含以下列:'question_id','level','question','wrong_ans1','wrong_ans2','wrong_ans3','correct_ans'。

我是否应该使用(id,question,level,is_active)'question_choices'等列来将数据分成多个表'questions' strong>列有(id,choice,is_correct,)

我有一个名为'user_ans'的表格,因此我可以跟踪用户所播放的问题以及他们给出的答案。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

我要么:

  1. 使用布尔值将答案保存在单个表中,以指示正确的答案,就像您描述的那样。 或者......
  2. 将答案保存在单个表格中,并使用问题模型上的属性来识别正确答案的ID。这可以确保只有一个答案是正确的。
  3. 在后一种情况下:

    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
    

    过度思考这一点,如果你有很多问题有相同的答案但是不同的问题对于不同的问题是正确的,那么你可以将答案捆绑成集(“蓝色”,“绿色“,”红色“)并将问题链接到集合 - 在这种情况下,您必须在问题级别指出正确的答案。

答案 1 :(得分: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