Sie könnten dies lösen, indem Sie eine Untertyptabelle hinzufügen (ich würde auch eine Nachschlagetabelle einer Aufzählung vorziehen, noch mehr, weil Sie flexibel sein und später weitere Typen hinzufügen möchten):
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)
Wenn Sie möchten, dass für die anderen Auswahlmöglichkeiten andere Daten gespeichert werden, können Sie ein EventYI
hinzufügen Tabelle (für Yes Immediate
), ein EventNO
usw.
Das einzige Problem bei diesem Design ist, dass nichts ein Ereignis verhindert, das nicht 'Yes Later'
ist im EventYL
hinzuzufügen Tabelle, daher sollte dies anderweitig erzwungen werden. Wenn nur MySQL Check Constraints hätte, könnte die Tabelle geändert werden in:
EventYL
------- --- YesLater version 2
EventId
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')