selection(p)(projection(R)) == projection(selection(p)(R)) 总是吗?
2 回答
如果认为选择是在投影中使用的列的子集上,那么是,
但如果没有,可能会出现您在不存在的列上进行选择的情况。
首先,“交换性”的属性根本不适用于您的情况。
交换性是对所有 x,y 的性质:x op y == y op x。
例如,对于所有 R1,R2 : R1 自然连接 R2 == R2 自然连接 R1。
其次,答案是否定的。
如果投影保留了限制条件中涉及的所有属性,则只能在限制内移动投影。否则,整个表达式就会变得无效。
编辑
(有点牵强,您可能会争辩说涉及交换性,因为您的示例案例是关于 FUNCTION COMPOSITION 是否是可交换的问题(f°g?= g°f)。了解您的数学应该使您的问题成为一个修辞问题,但是在这种情况下。)
编辑 2
将问题改为它们是否具有关联性也不好。关联性是一个只有一个运算符和三个参数的情况,问题是对于所有 a,b,c 是否 (a op b) op c ?= a op (b op c)。您有两个运算符(投影和选择)和一个参数。
这也意味着 DISTRIBUVITY 的问题(在其严格的数学意义上)也不适用,尽管您的场景在某些方面确实类似于算子分布的数学案例,并且有足够的延伸。严格数学意义上的分配性涉及两个二元运算符(即采用两个参数)。投影和限制是一元的。
我认为 csviri 已经正确回答了您的问题。你应该接受它。