3

我一直在做过去的纸质问题,并不断提出这些涉及 3 个有价值逻辑的问题。我的笔记提到了它,但没有给出与考试中要求的例子相关的例子。

我理解True = 1, False = 0&Unknown = 1/2以及And = Min,Or = Max和的基础Not(x) = 1-x。但是我不知道如何将其应用于以下问题:

在 SQL 中,讨论以下表达式的可能真值:
Ra > Rb OR Ra <= 0 OR Rb >= 0
证明你的答案是正确的。

和:

Owner 表的电话和年龄字段中可能包含空值。考虑所有可能的组合,显示表达式可能返回三个真值中的哪一个:
phone = '141-3304913' OR age <50 OR age >= 50

任何为我澄清这些的帮助将不胜感激:)

4

1 回答 1

3

我将重点放在具体的例子上,这更适合澄清事情。简而言之,您的逻辑表达式由三个子句的连词组成

C1: phone = '141-3304913'
C2: age < 50
C3: age >= 50

其三布尔逻辑表明结果是

True, if any clause is true
False, if all clauses are false
Unknown, in all the other cases

因此,如果与 True 关联的值最大,与 False 关联的值最小,而与 Unknown 关联的任何中间值,那么取MAXfor 连词证明是正确的。同样,析取函数也适用于MIN函数。只要我们将 0 和 1(排除)之间的任何值解释为未知,否定就有效;显然,如果我们取 1/2,则否定函数是“稳定的”,但这在数学方面并不重要。

更有效的是,这些子句清楚地对您的phone变量Page变量的以下值(实例)做出反应A

P1 such that P1 = '141-3304913'
P2 such that P2 <> '141-3304913'
P3 such that P3 = NULL
A1 such that A1 < 50
A2 such that A2 >= 50
A3 such that A3 = NULL

在条款的满足方面,我们有

P1 -> C1 = 1
P2 -> C1 = 0
P3 -> C1 = 1/2
A1 -> C2 = 1, C3 = 0
A2 -> C2 = 0, C3 = 1
A3 -> C2 = C3 = 1/2

通常存在 3*3 种可能的组合,因为您的两个变量中的每一个都采用三个可能的值:

P1 A1: C1 = 1, C2 = 1, C3 = 0 -> MAX(1,1,0) = 1 -> true
P1 A2: C1 = 1, C2 = 0, C3 = 1 -> MAX(1,0,1) = 1 -> true
P1 A3: C1 = 1, C2 = 1/2, C3 = 1/2 -> MAX(1,1/2,1/2) = 1 -> true
P2 A1: C1 = 0, C2 = 1, C3 = 0 -> MAX(0,1,0) = 1 -> true
P2 A2: C1 = 0, C2 = 0, C3 = 1 -> MAX(0,0,1) = 1 -> true
P2 A3: C1 = 0, C2 = 1/2, C3 = 1/2 -> MAX(0,1/2,1/2) = 1/2 -> unknown
P3 A1: C1 = 1/2, C2 = 1, C3 = 0 -> MAX(1/2,1,0) = 1 -> true
P3 A2: C1 = 1/2, C2 = 0, C3 = 1 -> MAX(1/2,0,1) = 1 -> true
P3 A3: C1 = 1/2, C2 = 1/2, C3 = 1/2 -> MAX(1/2,1/2,1/2) = 1/2 -> unknown

特别是,由于 C2 和 C3 是互斥的,因此您永远不会因为合取而得到 False。

该表达式R.a > R.b OR R.a <= 0 OR R.b >= 0反而呈现了这些情况:

R.a <= 0, R.a > 0, R.a = unknown
R.b >= 0, R.b < 0, R.b = unknown
R.a - R.b > 0, R.a - R.b <= 0, R.a - R.b = unknown

R.a - R.b显然,我们有 3 个变量和 27 个可能的情况,但可以轻松排除几个相关的情况。

于 2012-04-25T12:38:18.873 回答