Potresti risolverlo aggiungendo una tabella di sottotipi (preferirei anche una tabella di ricerca su enum, anche di più perché vuoi essere flessibile e aggiungere più tipi in seguito):
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)
Se desideri memorizzare dati diversi per le altre scelte, puoi aggiungere un EventYI
tabella (per Yes Immediate
), un EventNO
, ecc.
L'unico problema con questo design è che nulla impedisce un evento che non sia 'Yes Later'
da aggiungere in EventYL
tabella, quindi questo dovrebbe essere applicato in caso contrario. Se solo MySQL avesse vincoli di controllo, la tabella potrebbe essere modificata in:
EventYL
------- --- YesLater version 2
EventId
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')