1

テストプログラムを作成しています。私が今持っている 3 つの主要なオブジェクトは、テスト、質問と回答です。データベースには、テスト、質問と回答、および質問からテストへの FK と、回答から質問への外部キーの 3 つのテーブルがあります。質問テーブルの一部として、その質問に対する正解である回答の seq_num (一意の識別子) を格納する correct_answer_seq_num という列があります。この属性を質問表に入れることにしました。これは、この特定のテストの正解は 1 つしかないためです (この特定のテストでは、そうでないテストがあることはわかっています)。それを回答表に入れると、すべての回答を正解としてマークできます。

私が抱えている問題は、このプロパティをどのオブジェクトに置くべきかということです。これは実際には質問の属性ではなく、回答の属性ですが、データの整合性のために質問クラスに含める必要があると思います。

私はこれを大きくしすぎていませんか? そうでない場合は、プロパティをどこに置くべきですか?

それは問題ではありませんが、私はC#を使用しています

ありがとう!!

4

1 に答える 1

1

データベースで行った方法は正しく、モデルにも正しく変換されていると思います。次の点を考慮してください。

Question  AvailableAnswers  CorrectAnswer
   1 * 1           1, 2, 3              1
   1 + 1           1, 2, 3              2
   1 + 2           1, 2, 3              3

3 つすべてQuestionsに同じ利用可能ながありAnswers、それが正しいかどうかを判断できるのは、Answerが に関連し、Question他の中に配置されている場合のみです。Answersしたがって、Answerは に関連付けられていなければ「正確さ」を持たずQuestion、 「正確さ」はではなくAnswer'sのプロパティになります。これは、同じものが複数に関連付けられる可能性がある場合に特に当てはまります。一部の場合は正しく、他の場合は正しくありません。QuestionAnswerAnswerQuestions

要約すると、Question.CorrectAnswerよりも理にかなっていると思いますAnswer.IsCorrect

最後に、この種のことを大々的に行う価値があると思います。設計上の決定とモデルの構造に慣れていない場合は、おそらく何かが正しくないという兆候です:)

于 2011-07-08T18:19:18.483 に答える