2

私はこのクイズアプリケーションを構築しています。ちょっと洗練されたものにしたい。

私はこのデータベース スキーマを思いつきました。しかし、私は本当に混乱しています..どのような関連付けが必要かなどについて混乱しています。

1 つ注意すべき点は、テストが作成されるとき、それを受ける受験者の数に関する情報がないことです。test_questionsそのため、とcandidate_answersを別のテーブルとして作成しました。

協会で私を助けてください。

ここに画像の説明を入力

4

2 に答える 2

1

見てみましょう、それは次のようになります。

# For Questions: 
:has_many => :answers
:belongs_to => :test_question
  # questions table should have the "test_question_id" column

# Answers:
:has_many => :candidate_answers
:belongs_to => :question 
  # Answers table should have the "question_id" column

#Test Questions:
:has_many => :questions
:has_many => :candidate_answers
:belongs_to => :test
  # test questions table should have the "test_id" column but not the "question_id"

#Tests: 
:has_many => :results
:has_many => :test_questions
:has_many => :candidates, :through => :results, :foreign_key => "candidate_id" #why not? ^^

#Results
:belongs_to => :test
:belongs_to => :candidate
  # Results table should have the "test_id" and "candidate_id" columns

#candidate_answers 
:belongs_to => :candidate
:belongs_to => :test_question
:belongs_to => :answer
  # candidate_answers table should have the "test_question_id", "candidate_id" and "answer_id" columns

#Candidates
:has_many => :candidate_answers
:has_many => :results
:has_many => :answered_tests, :class_name => "test", :through => :results, :foreign_key => "test_id" # again, why not?

そして、あなたが与えた情報で、それはあなたが望むことをするはずです。;)

于 2012-12-21T13:49:12.453 に答える
0

これは次のことを行う必要があります。

  • 落とすcandidate_answers.test_question
  • candidate_answersテーブルをドロップ
  • test_questionsテーブルをドロップ

    class Test < ActiveRecord::Base has_many :results has_many :questions end

    class Result < ActiveRecord::Base 所属先 :test 所属先 :候補 end

    class Candidate < ActiveRecord::Base has_many :results has_many :answers end

    class Answer < ActiveRecord::Base 所属先 :質問 所属先 :候補 end

    クラスの質問

複数の質問に対して回答を再利用するつもりだったようですが、それは一般的に悪い考えです..その場合は、回答を複製することをお勧めします。

于 2012-12-21T13:51:15.053 に答える