サブタイプテーブルを追加することでこれを解決できます(柔軟性があり、後でタイプを追加したいので、列挙型よりもルックアップテーブルの方が好きです):
ChoiceType
---------- --- the lookup table
Choice
Desciption
PRIMARY KEY(Choice)
Event
----- --- your table
EventId
Choice
... other stuff for all events
PRIMARY KEY(EventId)
FOREIGN KEY (Choice)
REFERENCES ChoiceType(Choice)
EventYL
------- --- the YesLater table
EventId
EventDate
... other stuff for YesLater events only
PRIMARY KEY(EventId)
FOREIGN KEY (EventId)
REFERENCES Event(EventId)
他の選択肢のために別のデータを保存したい場合は、EventYIを追加できます。 テーブル(Yes Immediateの場合 )、EventNO 、など。
この設計の唯一の問題は、'Yes Later'ではないイベントを妨げるものが何もないことです。 EventYLに追加されます テーブルなので、これは別の方法で強制する必要があります。 MySQLのみにチェック制約がある場合、テーブルは次のように変更できます。
EventYL
------- --- YesLater version 2
EventId
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')