不解释问题:
无论如何,是否有2个空值的约束总是需要1个有值?例如,两个日期列都为空,但至少有 1个需要具有一个值
问题描述:
假设我有一个名为Expense的表格
并有两个日期:
prevision_expense_expiration_date DATE为空ABLEABLE_payment_date DATE为空
这两列的逻辑如下:
我买了东西,我知道我得为此花些钱,例如电话费。我将其作为费用输入,并带有expense_payment_date。该日期是我应该支付的假定日期,而不是实际的支付日期,例如发票的到期日期。
在其他情况下,我会出售某些提供者提供的服务的礼品卡。我可能有买我的提供商的服务转移到我的客户的费用只有当客户赎回卡。因此,礼品卡有一个有效期,我想对该“费用”做一个预先准备,而不插入礼品卡有效期内的费用,如果礼品卡过期,则“费用”不应输入到帐户中系统。
我知道我可以有2个相等的表,分别称为prevision_expense和Confirmed_expense,但是听起来不对,所以我在同一张表中有2个日期,可以为空,但是我想约束一下,以便始终需要一个。
还有另一种可行的策略:
payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL
因此,在这种情况下,如果日期为prevision,则bool值将为1,否则将为0。没有空值,一切都很好。除了我希望可以选择在第一次有预先设定日期时存储两个值,然后(然后说两天后说)确定该费用的日期时,在这种情况下,采用策略2时,我将没有该选项。
我在数据库设计中做错了什么吗?:D
CHECK
约束来执行此操作。无需保留列。