आप इसे उपप्रकार तालिका जोड़कर हल कर सकते हैं (मैं एनम पर एक लुकअप टेबल भी पसंद करूंगा, और भी अधिक क्योंकि आप लचीला होना चाहते हैं और बाद में और प्रकार जोड़ना चाहते हैं):
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
add जोड़ सकते हैं तालिका (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')