-1

我对这个声明以及为什么它是真的感到困惑。

如果类型是“稀有”,则价格必须超过 500 美元

这个条件符合它,但我很困惑如何。

CHECK (type <> 'rare' OR price > 500)

这个问题也是, 如果类型是“新颖”,那么价格必须在 10 美元以上但低于 30 美元。

CHECK ((type <> 'novel') OR (price > 10 AND price < 30))
4

2 回答 2

0

“A 或 B”意味着这些陈述中至少有一个是正确的。如果 A 不为真(type = 'rare'),则 B 必须为真(价格 > 500)才能满足条件。您拥有的第二个陈述具有完全相同的逻辑。

于 2013-04-24T14:43:56.350 回答
0

很难从概念上理解为什么它们是等价的。从四个可能的条件开始可能会有所帮助,相对于:如果类型是,rare那么价格必须超过 500 美元。

Type = 'rare', price > $500:   True
Type <> 'rare', price > $500:  True
Type = 'rare', price <= $500:  False
Type <> 'rare', price <= $500  True

你可以对 (t​​ype <> 'rare' OR price > 500` 进行同样的练习,你会发现它们在逻辑上是等价的。

为什么?直观地说,“if type is rarethen price must be over $500”只是“关心”类型是否稀有。如果该类型不是罕见的,则该陈述为真。同样,如果价格大于 500 美元,那么它总是正确的。该check表达式只是捕获这两个条件。

于 2013-04-24T14:49:23.567 回答