如果元组仅存在于约束的所有出现中,则查找元组
Finding tuples if it only exists in all occurrences of a constraint
数据库(所有条目均为整数):
ID | BUDGET
1 | 20
8 | 20
10 | 20
5 | 4
9 | 4
10 | 4
1 | 11
9 | 11
假设我的约束条件是预算 >= 10。
在这种情况下,我只想 return ID 为 1。我该怎么做?
我尝试在 selecting budget >= 10 和 returning if id1 = id2 and budget1 <> budget2 之后取其自身的叉积,但这在只有 1 个预算的情况下不起作用即 >= 10。(下面的 EG)
ID | BUDGET
1 | 20
8 | 20
10 | 20
1 | 4
5 | 4
9 | 4
10 | 4
9 | 4
如果我按照我在第一个示例中所做的那样做,则不会 return 编辑任何内容,因为 budget1 <> budget2 将导致空 table。
EDIT1:我只能用关系代数来解决这个问题。所以SQL的存在,where和count关键字不能用
Edit2:仅项目,select,重命名,设置差异,设置并集,左连接,右连接,完全内连接,自然连接,允许设置交集和叉积
这个问题我不是很清楚。如果要return所有预算大于10且没有预算小于10的ID,表达式简单如下:
π(ID)(σ(BUDGET>=10)(R)) - π(ID)(σ(BUDGET<10)(R))
另一方面,如果您想要所有 ID 关系中存在的所有预算且大于 10,那么我们必须使用 ÷
运算符:
R ÷ π(BUDGET)(σ(BUDGET>=10)(R))
从您的评论来看,第二种情况是正确的。让我们看看如何根据定义计算除法(应用于两个泛型关系 R(A) 和 S(B)):
R ÷ S = πA-B(R) - πA-B((πA-B(R) x S) - R)
其中 R 是原始关系,
S = π(BUDGET)(σ(BUDGET>=10)(R)),
即:
BUDGET
------
20
11
从内部表达式开始:
πA-B(R)等于πID(R)=
ID
--
1
5
8
9
10
则 πA-B(R) x S) 为:
ID BUDGET
---------
1 20
1 11
5 20
5 11
8 20
8 11
9 20
9 11
10 20
10 11
那么 ((πA-B(R) x S) - R) 是:
ID BUDGET
---------
5 20
5 11
8 11
9 20
10 20
则 πA-B((πA-B(R) x S) - R) 为:
ID
__
5
8
9
10
最后,从 πA-B(R) 中减去这个关系,我们得到结果:
ID
--
1
数据库(所有条目均为整数):
ID | BUDGET
1 | 20
8 | 20
10 | 20
5 | 4
9 | 4
10 | 4
1 | 11
9 | 11
假设我的约束条件是预算 >= 10。 在这种情况下,我只想 return ID 为 1。我该怎么做? 我尝试在 selecting budget >= 10 和 returning if id1 = id2 and budget1 <> budget2 之后取其自身的叉积,但这在只有 1 个预算的情况下不起作用即 >= 10。(下面的 EG)
ID | BUDGET
1 | 20
8 | 20
10 | 20
1 | 4
5 | 4
9 | 4
10 | 4
9 | 4
如果我按照我在第一个示例中所做的那样做,则不会 return 编辑任何内容,因为 budget1 <> budget2 将导致空 table。
EDIT1:我只能用关系代数来解决这个问题。所以SQL的存在,where和count关键字不能用
Edit2:仅项目,select,重命名,设置差异,设置并集,左连接,右连接,完全内连接,自然连接,允许设置交集和叉积
这个问题我不是很清楚。如果要return所有预算大于10且没有预算小于10的ID,表达式简单如下:
π(ID)(σ(BUDGET>=10)(R)) - π(ID)(σ(BUDGET<10)(R))
另一方面,如果您想要所有 ID 关系中存在的所有预算且大于 10,那么我们必须使用 ÷
运算符:
R ÷ π(BUDGET)(σ(BUDGET>=10)(R))
从您的评论来看,第二种情况是正确的。让我们看看如何根据定义计算除法(应用于两个泛型关系 R(A) 和 S(B)):
R ÷ S = πA-B(R) - πA-B((πA-B(R) x S) - R)
其中 R 是原始关系,
S = π(BUDGET)(σ(BUDGET>=10)(R)),
即:
BUDGET
------
20
11
从内部表达式开始:
πA-B(R)等于πID(R)=
ID
--
1
5
8
9
10
则 πA-B(R) x S) 为:
ID BUDGET
---------
1 20
1 11
5 20
5 11
8 20
8 11
9 20
9 11
10 20
10 11
那么 ((πA-B(R) x S) - R) 是:
ID BUDGET
---------
5 20
5 11
8 11
9 20
10 20
则 πA-B((πA-B(R) x S) - R) 为:
ID
__
5
8
9
10
最后,从 πA-B(R) 中减去这个关系,我们得到结果:
ID
--
1