我正在尝试为多项选择问答游戏确定最有效的数据库模式。我在包含列的电子表格中有问题和答案,'question_id'、'level'、'question'、'wrong_ans1'、'wrong_ans2'、'wrong_ans3'、'correct_ans'。
我是否应该将数据分成多个表 'questions',其中包含诸如 (id, question, level, is_active) 和 'question_choices'之类的列strong> 具有诸如 (id, choice, is_correct,)?
之类的列我有一个名为 'user_ans' 的表,因此我可以跟踪用户提出的问题和他们给出的答案。
如有任何帮助,我们将不胜感激!
最佳答案
我会:
- 按照您的描述,将答案保存在一个带有 bool 值的表格中以指示正确答案。 或者……
- 将答案保存在一个表中,并使用问题模型的属性来标识正确答案的 ID。这样可以确保只有一个答案是正确的。
在后一种情况下:
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") 并将问题链接到集合——在这种情况下,您当然必须在问题级别指明正确答案。
关于ruby-on-rails - 多项选择问答游戏的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028112/