Je zou dit kunnen oplossen door een subtypetabel toe te voegen (ik heb ook liever een opzoektabel dan een opsomming, vooral omdat je flexibel wilt zijn en later meer typen wilt toevoegen):
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)
Als je andere gegevens wilt opslaan voor de andere keuzes, dan kun je een EventYI
. toevoegen tabel (voor Yes Immediate
), een EventNO
, enz.
Het enige probleem met dit ontwerp is dat niets een gebeurtenis verhindert die niet 'Yes Later'
. is toe te voegen in de EventYL
tabel, dus dit moet anders worden afgedwongen. Als alleen MySQL controlebeperkingen had, zou de tabel kunnen worden gewijzigd in:
EventYL
------- --- YesLater version 2
EventId
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')