ユーザーが複数の質問の正解を選択する必要があるコンテスト システムを実装しています。毎週、新しい問題のセットがあります。ユーザーの参加をデータベースに保存する正しい方法を見つけようとしています。現在、次のデータモデルがあります。
Participation Week
+--------------+ +--------------+
| Id | +----------->| Id |<-+
| UserId | | | StartDate | |
| WeekId |-----+ +--------------+ |
+--------------+ |
Question |
+--------------+ |
| Id | |
| WeekId |--+
| Text |
+--------------+
私が思いついた唯一の解決策は、次の図に示すように、参加を質問に関連付ける Answer テーブルを追加することです。
Participation Week
+--------------+ +--------------+
+->| Id | +----------->| Id |<-+
| | UserId | | | StartDate | |
| | WeekId |-----+ +--------------+ |
| +--------------+ |
| Question |
| Answer +--------------+ |
| +------------------+ +---->| Id | |
+------| ParticipationId | | | WeekId |--+
| QuestionId |----+ | Text |
| Value | +--------------+
+------------------+
参加者は別の週の質問に回答できるため、このソリューションが非常に優れているとはリンクしません。回答に WeekId を追加しても役に立ちません。
この情報を表す正しい方法は何ですか?