次の問題があります。
イベントには「開始」と「終了」の時間と量があります。両方に MySQL DATETIME を使用します。
「重複するイベントはありません」という制約がある場合、いくつかのチェックなどを行う必要がありますが、それをどのように設計するのですか? ユーザーは5分程度の精度しか必要としませんが、「より単純」/「よりクリーン」であるため、秒で計算したいと思います
開始と終了が「YYYY-MM-DD 12:00:00」-「YYYY-MM-DD 14:00:00」のイベント (A) がある場合
そしてもう一つ
(B) "YYYY-MM-DD 14:00:00"-"YYYY-MM-DD 16:15:00" -> 両方に 14:00:00 が含まれていても、重複していません。
それらが実際に重複していないことを確認するには、使用する必要があります
A.end < B.begin など
または
A.end <= B.begin など AND すべての終了時刻が "DATE HH:MM:00" ではなく "DATE HH:MM:00 (マイナス 1 秒)" になるように "ハック" を作成、つまり A.endその場合、「YYYY-MM-DD 14:00:00」ではなく「YYYY-MM-DD 13:59:59」になります。
1 つ目は最も単純ですが、多数の異なるイベントがあり、「オーバーブッキング」していないこと、つまりイベントの個々の金額が合計金額を超えていないことを確認する必要がある場合 (例: 各イベントの場合人数のテーブルの予約です。常にテーブルの総数を超えることはできません)