我应该把这个对象属性/属性放在哪里

时间:2011-07-08 17:11:24

标签: object attributes class-design code-design object-properties

我正在创建一个测试程序。我现在拥有的三个主要对象是测试,问题和答案。我在数据库中有三个表,测试,问题和答案以及从问题到测试的FK以及从问题的答案中获取的外键。作为问题表的一部分,我有一个名为correct_answer_seq_num的列,它存储答案的seq_num(唯一标识符),该答案是该问题的正确答案。我决定将这个属性放在问题表中,因为只有一个答案可以是正确的答案(对于这个特定的测试。我知道有测试的地方不是这样),如果我把它放在答案表中,那么你可以将所有答案标记为正确。

我遇到的麻烦是我应该把这个属性放在哪个对象中。它不是一个问题的属性,它更像是一个答案的属性,但我仍然认为它应该在数据的问题类中诚信缘故。

我是否做了太大的交易,如果没有,我应该把财产放在哪里。

并不重要,但我使用的是C#

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你在数据库中完成它的方式是正确的,并且也正确地转换为模型。请考虑以下事项:

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

所有三个Questions都具有相同的可用Answers,并且仅当AnswerQuestion相关并且放在其他Answers之内时可以说是否正确。因此,Answer没有与Question相关联的“正确性”,这会使Answer's'正确性'成为Question的属性,而不是Answer }。如果相同的Answer可以与多个Questions相关联,那么尤其如此 - 对某些人而言是正确的,对其他人而言则不正确。

总而言之,我认为Question.CorrectAnswerAnswer.IsCorrect更有意义。

最后,我认为值得大肆宣传这类事情,好像你对设计决策和模型结构不满意,这可能表明事情不对:)