选择(p)(投影(R))==投影(选择(p)(R))总是吗?
答案 0 :(得分:5)
如果考虑选择是否在投影中使用的列的子集上,则为是,
但如果没有,则可能存在您对不存在的列进行选择的情况。
答案 1 :(得分:2)
首先,“交换性”的属性根本不适用于您的情况。
交换性是所有x,y:x op y == y op x的属性。
例如,对于所有R1,R2:R1 NATURAL JOIN R2 == R2 NATURAL JOIN R1。
其次,答案是否定的。
如果投影保留了限制条件中涉及的所有属性,则只能在限制内移动投影。否则,整体表达式将变为无效。
修改
(稍微有点拉伸,你可以说因为你的例子是关于FUNCTION COMPOSITION是否可交换的问题(f°g?= g°f)。你知道你的数学应该提出你的问题。然而,在这种情况下,这是一种修辞方式。)
编辑2
将问题改为关联是否也无关紧要。关联性是一个单一运算符和三个自变量的情况,其中问题是(a op b)op c?= a op(b op c),对于所有a,b,c。你有两个操作符(投影和选择)和一个参数。
这也意味着分布性问题(在严格的数学意义上)也不适用,尽管你的情景确实类似于算子分布的数学例子,在某些方面,并给予足够的伸展。严格的数学意义上的分配涉及两个二元运算符(即取两个参数)。投射和限制是一元的。
我认为csviri已正确回答了您的问题。你应该接受它。