gpt4 book ai didi

mysql - 列依赖于其他列值

转载 作者:行者123 更新时间:2023-11-29 02:04:21 25 4
gpt4 key购买 nike

我有一列将具有三个可能的值(以后可能更多),我将其存储为枚举:

yes immediately
yes later
no

如果选择yes later,我们还需要存储事件发生的日期。在我看来,这必须是另一个专栏。

我的问题是设计缺乏完整性。即使枚举不是 yes later,也没有什么可以阻止 date 有一个值,也没有任何东西可以强制 date 如果它是.

是否可以改进此设计以使两列之间具有完整性?使用单独的表和不同的列类型绝对是可能的。

最佳答案

您可以通过添加一个子类型表来解决这个问题(我也更喜欢查找表而不是枚举,甚至更多,因为您想要灵活并在以后添加更多类型):

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 表(对于 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')

关于mysql - 列依赖于其他列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com