我对这个陈述很困惑,为什么会这样。
如果类型为“罕见”,则价格必须超过500美元
这种情况符合它,但我很困惑。
CHECK (type <> 'rare' OR price > 500)
这个问题也是, 如果类型是“新颖的”,那么价格必须超过10美元但不到30美元。
CHECK ((type <> 'novel') OR (price > 10 AND price < 30))
答案 0 :(得分:0)
“A或B”表示这些陈述中至少有一个是真的。如果A不为真(type ='rare'),那么B必须为真(价格> 500)才能满足条件。你拥有的第二个陈述具有完全相同的逻辑。
答案 1 :(得分:0)
概念上很难理解为什么这些是等价的。可能有助于从可能的四个条件开始,相对于:如果类型为rare
,那么价格必须超过500美元。
Type = 'rare', price > $500: True
Type <> 'rare', price > $500: True
Type = 'rare', price <= $500: False
Type <> 'rare', price <= $500 True
你可以进行相同的练习(键入&lt;&gt;&#39;稀有&#39; OR价格&gt; 500`,你会发现它们在逻辑上是等价的。
为什么呢?直观地说,表达式为:&#34;如果类型为rare
,那么价格必须超过500美元&#34;只是&#34;关心&#34;关于类型是罕见的。如果类型不罕见,则该语句为true。同样,如果价格大于500美元,那么它将永远是真的。 check
表达式只是捕获这两个条件。