我很难理解这些陈述的完整性约束 鉴于声明
“如果年龄低于5岁,则价格必须超过5000美元” 以下是IC的
CHECK (NOT (age < 5 AND price <= 5000))
CHECK (NOT (age >=5 OR price > 5000)
以及此声明 “如果类型是'SUV'那么价格必须超过10000美元但不到30000美元”
CHECK (NOT (type = 'SUV' AND (price <=10000 OR price >= 30000"
CHECK (((type<> 'SUV') OR (price > 10000 AND price < 30000))
我无法理解为什么'NOT'放在IC的前面以及最后一个中的&lt;&gt;('not equal')。似乎它否定了约束应该是什么。 “检查(不是(年龄&gt; = 5或价格> 5000))”似乎应该是(年龄<= 5或价格> 5000)。“检查(((类型&lt;&gt;'SUV')或(价格&gt; 10000 AND price&lt; 30000))。“这让我感到困惑,因为它说”类型不等于SUV,或者价格大于10,000,价格小于30,000。“不应该是类型相等SUV然后是第二部分?
答案 0 :(得分:1)
这是基本的布尔布尔逻辑。以下是同样的事情:
CHECK (NOT (age >= 5 AND price < 5000) )
CHECK (age < 5 OR price >= 5000)
这两个都在你描述时实现约束:如果年龄&lt; 5然后价格&gt; = 5000。
NOT
就在那里,因为有些人理解这种情况说你不能同时年龄≥> 5和价格&lt; 5000。