我正在尝试为多选琐事游戏确定最有效的数据库架构.我在电子表格中提供了问题和答案,其中列有’question_id’,’level’,’question’,’wrong_ans1′,’wrong_ans2′,’wrong_ans3′,’correct_ans’.
我应该使用诸如(id,question,level,is_active)和’question_choices’等列来将数据分成多个表的“问题”,并使用诸如(id,choice,is_correct)之类的列?
我有一个名为’user_ans’的表格,因此我可以跟踪用户所播放的问题以及他们给出的答案.
任何帮助将不胜感激!
最佳答案 我要么:
>使用布尔值将答案保存在单个表中,以指示正确的答案,就像您描述的那样.
要么 …
>将答案保存在单个表中,并使用问题模型上的属性来标识正确答案的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
过度思考这一点,如果你有很多问题具有相同的答案但是不同的问题对于不同的问题是正确的,那么你可以将答案捆绑成集(“蓝色”,“绿色”,“红色“)并将问题链接到集合 – 在这种情况下,您肯定必须在问题级别指出正确的答案.