3

객관식 퀴즈 게임에서 가장 효율적인 db 스키마를 결정하려고합니다. 'question_id', 'level', 'question', 'wrong_ans1', 'wrong_ans2', 'wrong_ans3', 'correct_ans'와 같은 스프레드 시트에 질문과 답변이 있습니다.객관식 데이터베이스 스키마

나는 '질문' 열 등 (ID, 질문, 수준, is_active)'question_choices' 열 등 (ID, 선택, is_correct 여러 테이블에 데이터를 중단해야 ,)?

'user_ans'이라는 테이블이있어서 사용자가 플레이 한 질문과 그들이 준 응답을 추적 할 수 있습니다.

도움이 될 것입니다.

답변

2

나는 것 중 하나

  1. 정답을 표시하는 부울로 하나의 테이블에 답을 유지, 당신이 묘사하는 것처럼. 또는
  2. 답변을 하나의 테이블에 유지하고 질문 모델의 속성을 사용하여 정답의 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 

, 대답을 세트 ("파란색", "녹색", "빨간색")로 묶어 세트에 질문을 연결할 수 있습니다.이 경우 질문 레벨에서 정답을 분명히 표시해야합니다.

+0

안녕 데이비드, 각 질문에는 여러 개의 객관식 답이 있습니다. User_ans를 포함하여 모델이 어떻게 보이는지 보여 줄 수 있습니까? 고맙습니다! – Shane

+0

데이비드 감사합니다! 그것이 효과가 있다고 생각하십시오. – Shane

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 
+0

Hi Rodrigo, User_Ans 모델이 어떻게 구성되어 있습니까? – Shane