アーチェリー トーナメントのシュートのデータベースを構築しています。テーブルの 1 つは、そこで働くボランティアの勤務シフトを保持します。
現在、次のようになっています。
+-------+---------+--------+---------+-------+-----+
| JobID | ShiftID | UserID | EventID | Hours | Day |
+-------+---------+--------+---------+-------+-----+
| 10 | 9 | 1125 | 6 | NULL | 1 |
| 11 | 9 | 0 | 6 | NULL | 1 |
+-------+---------+--------+---------+-------+-----+
JobID は、登録、キッチンなどのジョブへのリンクです。
ShiftID は、シフトの時間、つまり 7 ~ 9 にリンクしています (シフトが長くなる可能性があるため、イベント所有者の要求に応じて時間があります)。
ボランティアへの UserID リンク...
EventID は、特定のイベントにリンクします。
Day は、複数日にまたがるイベントの場合、イベントの日です。
イベントのエントリが作成され、ユーザーが追加されます。これにより、現在、連結された列 (JobID、ShiftID、UserID、EventID) に一意の制約を設定できます。
ただし、イベントの所有者は、イベントで同時に複数のシフトを実行できるようにしたいと考えています。ユーザーが登録されると、エントリは一意になります。
これに対処する適切な方法は何ですか?これらは私が考えた解決策ですが、どれも正しくないと感じました。
- 新しいシフトを作成します。
- 新しい仕事を作る。
- 保留中のジョブシフト用の新しいテーブルを作成します。
- テーブルの一意の制約を削除します。
- 重複シフトに対処するために別の列を追加します。