Я внедряю систему соревнований, в которой пользователь должен выбрать правильный ответ на несколько вопросов. Каждую неделю появляется новый набор вопросов.
Я пытаюсь найти правильный способ хранения участия пользователей в базе данных. Прямо сейчас у меня есть следующая модель данных:
Participation Week
+--------------+ +--------------+
| Id | +----------->| Id |<-+
| UserId | | | StartDate | |
| WeekId |-----+ +--------------+ |
+--------------+ |
Question |
+--------------+ |
| Id | |
| WeekId |--+
| Text |
+--------------+
Единственное решение, которое я нашел, - это добавить таблицу ответов, которая связывает участие с вопросом, как показано на следующей диаграмме:
Participation Week
+--------------+ +--------------+
+->| Id | +----------->| Id |<-+
| | UserId | | | StartDate | |
| | WeekId |-----+ +--------------+ |
| +--------------+ |
| Question |
| Answer +--------------+ |
| +------------------+ +---->| Id | |
+------| ParticipationId | | | WeekId |--+
| QuestionId |----+ | Text |
| Value | +--------------+
+------------------+
Я не связываю это решение, это очень хорошо, потому что оно позволяет участнику иметь ответы на вопросы другой недели. Добавление WeekId к ответу не помогает.
Как правильно представлять эту информацию?