Где я должен поместить этот объект свойство / атрибут - PullRequest
1 голос
/ 08 июля 2011

Я создаю программу тестирования.Три основных объекта, которые у меня есть сейчас - это тесты, вопросы и ответы.У меня есть три таблицы в базе данных, тесты, вопросы и ответы и FK от вопросов к тестам и иностранный ключ от ответов на вопросы.В качестве части таблицы вопросов у меня есть столбец под названием correct_answer_seq_num, в котором хранится seq_num (уникальный идентификатор) ответа, который является правильным ответом на этот вопрос.Я решил поместить этот атрибут в таблицу вопросов, потому что только один ответ может быть правильным (для этого конкретного теста. Я знаю, что есть тесты, где это не так), и если я добавлю его в таблицу ответов, тоВы можете пометить все ответы как правильные.

Проблема, с которой я сталкиваюсь, заключается в том, в какой объект я должен добавить это свойство. На самом деле это не атрибут вопроса, это скорее атрибут ответа, но я все же думаю, что это должно быть в вопросе.класс для обеспечения целостности данных.

Я слишком много делаю из этого, и если нет, то куда я должен поместить свойство.

Не то чтобы это должно было иметь значение, но я использую C #

Спасибо !!

1 Ответ

1 голос
/ 08 июля 2011

Я думаю, что то, как вы это сделали в базе данных, является правильным и правильно переводит в модель.Обратите внимание на следующее:

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

Все три Questions имеют одинаковые доступные Answers, и только когда Answer относится к Question и находится среди других Answers, что выМожно сказать, правильно ли это.Поэтому Answer не имеет «правильности», не будучи ассоциированным с Question, что делает Answer's «правильность» свойством Question, а не Answer.Это особенно верно, если один и тот же Answer может быть связан с несколькими Questions - корректно для одних, неверно для других.

Итак, подытоживая, я думаю, что Question.CorrectAnswer имеет больше смысла, чем Answer.IsCorrect.

Наконец, я думаю, что из такого рода вещей стоит задуматься, потому что если вам не нравятся ваши дизайнерские решения и структура вашей модели, это, вероятно, признак того, что что-то не так.t right:)

...