您可以通过添加子类型表来解决此问题(我还希望查找表胜于枚举,甚至更多,因为您想灵活一些并在以后添加更多类型):
ChoiceType---------- --- the lookup tableChoice DesciptionPRIMARY KEY(Choice)Event----- --- your tableEventId Choice ... other stuff for all eventsPRIMARY KEY(EventId)FOREIGN KEY (Choice) REFERENCES ChoiceType(Choice)EventYL ------- --- the YesLater tableEventId EventDate... other stuff for YesLater events onlyPRIMARY KEY(EventId)FOREIGN KEY (EventId) REFERENCES Event(EventId)
如果您想为其他选择存储不同的数据,则可以添加一个
EventYI表(用于
Yes Immediate),一个
EventNO,等等。
此设计的唯一问题是,没有什么可以阻止不
'YesLater'添加到
EventYL表中的事件,因此应以其他方式强制执行。如果只有MySQL具有检查约束,则可以将该表更改为:
EventYL ------- --- YesLater version 2EventId ChoiceEventDatePRIMARY KEY(EventId, Choice)FOREIGN KEY (EventId, Choice) REFERENCES Event(EventId, Choice)CHECK (Choice = 'YL')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)