如何用投影和等值连接来表达交集?
How could intersection be expressed in terms of projection and an equijoin?
Here(在幻灯片 #46)说:表明交集 R ∩ S
可以用
投影和等值连接的组合。
怎么可能?据我所知,R ∩ S = R - (R - S)
,所以对于交集,两个关系必须具有相同的属性。属性都一样,为什么还要投影?
在您链接的文件的幻灯片 27 中,据说联合和差异的关系参数只能具有相同的数量,不一定具有相同的属性,对于交集也是如此。
因此它们可以有不同的名称,在这种情况下,如果您对同一位置的属性在 R 和 S 上进行等值连接,结果等同于交集,但具有比所需属性更多的属性,因此投影需要获得与正确数量的属性的关系。
例如,假设您有:
R(A, B, C) ∩ S(D, E, F) = The set of tuples appearing both in R and S
这相当于:
π(A,B,C) (R(A, B, C) ⋈(A=D ∧ B=E ∧ C=F) S(D, E, F))
请注意,可以通过为每对夫妇 (A, D)、(B, E) 和 (C, F) 选择两个属性中的任何一个来完成投影。
最后请注意,关系代数上集合运算符的其他定义要求操作数具有相同名称和类型的属性。
Here(在幻灯片 #46)说:表明交集 R ∩ S
可以用
投影和等值连接的组合。
怎么可能?据我所知,R ∩ S = R - (R - S)
,所以对于交集,两个关系必须具有相同的属性。属性都一样,为什么还要投影?
在您链接的文件的幻灯片 27 中,据说联合和差异的关系参数只能具有相同的数量,不一定具有相同的属性,对于交集也是如此。
因此它们可以有不同的名称,在这种情况下,如果您对同一位置的属性在 R 和 S 上进行等值连接,结果等同于交集,但具有比所需属性更多的属性,因此投影需要获得与正确数量的属性的关系。
例如,假设您有:
R(A, B, C) ∩ S(D, E, F) = The set of tuples appearing both in R and S
这相当于:
π(A,B,C) (R(A, B, C) ⋈(A=D ∧ B=E ∧ C=F) S(D, E, F))
请注意,可以通过为每对夫妇 (A, D)、(B, E) 和 (C, F) 选择两个属性中的任何一个来完成投影。
最后请注意,关系代数上集合运算符的其他定义要求操作数具有相同名称和类型的属性。