一意のインデックス用にテーブルを構造化する際の問題を回避する方法を見つけるのに苦労しています。
アイテムが予約されているテーブルがあり、構成するために使用されるいくつかのフィールドがあります
ItemID - INT
Date - DATE
TimeOfDay - INT (morning = 1, afternoon = 2)
ReservationStatus - VARCHAR (expired, cancelled, confirmed, cancelled by admin)
問題は ReservationStatus フィールドにあります。システムはキャンセルされた複数の行を許可する必要がありますが、確認済みまたは期限切れの行は 1 つだけです (アプリは確認済みから期限切れに変わります)。私はアイデアがありません。どんな助けもいただければ幸いです。
編集:
完全なテーブル構造
ReservationID - PK Auto-incrementing Integer
SubItemID - INT FK
MemberID - INT FK
Date - DATE
TimeOfDay - INT
ReservationStatus - VARCHAR
SubItemID、Date、TimeOfDay、ReservationStatus は一意である必要があります。複数のメンバーが同じ日の午後に同じ SubItem を予約することはできません。
私は自分のアプリでこれを検証しますが、テーブル構造を介して (プログラマーのエラーの場合に) 整合性を確保したいと考えています。