Anda dapat menyelesaikan ini dengan menambahkan tabel subtipe (saya juga lebih suka tabel pencarian daripada enum, terlebih lagi karena Anda ingin fleksibel dan menambahkan lebih banyak tipe nanti):
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)
Jika Anda ingin data yang berbeda disimpan untuk pilihan lain, maka Anda dapat menambahkan EventYI
tabel (untuk Yes Immediate
), sebuah EventNO
, dll.
Satu-satunya masalah dengan desain ini, adalah tidak ada yang mencegah peristiwa yang bukan 'Yes Later'
untuk ditambahkan di EventYL
tabel, jadi ini harus diberlakukan sebaliknya. Jika saja MySQL memiliki batasan pemeriksaan, tabel dapat diubah menjadi:
EventYL
------- --- YesLater version 2
EventId
Choice
EventDate
PRIMARY KEY(EventId, Choice)
FOREIGN KEY (EventId, Choice)
REFERENCES Event(EventId, Choice)
CHECK (Choice = 'YL')