2011-10-10 59 views
0

总是选择(p)(投影(R))==投影(选择(p)(R))吗?选择和投影相关吗?

+0

你需要一些证据吗? – csviri

+0

@csviri:我不需要证明。我只想知道它持有哪些情况以及哪些情况不适用。 – Bruce

+0

谷歌友好的方式来制定这个问题是:“可以投影通过选择”(反之亦然)。 –

回答

3

如果想如果选择是对在预测中使用则是列的子集,

,但如果没有,有可能是你在哪里上不存在的列进行选择的情况。

+0

您能为这个猜想提供一个参考吗? – Bruce

+1

对不起,我没有任何参考文献。但是如果你仔细想一想,如果前提条件成立(选择投影中使用的列的子集),那么我们可以仅分离这两种情况,因为投影定义了只与列的子集关联的情况,所以这是微不足道的情况。如果不成立,并且您在不存在的列上做出选择(如果错误),则无法完成。 所以它并不总是可交换的,只要前面提到的前提条件成立。 – csviri

2

首先,'交换性'的属性根本不适用于你的情况。

交换性是所有x,y的属性:x op y == y op x。

例如,对于所有R1,R2:R1 NATURAL JOIN R2 == R2 NATURAL JOIN R1。

其次,答案是否定的。

如果投影保留了限制条件中涉及的所有属性,则只能在限制内移动投影。否则,整体表达式变得无效。

编辑

(有一个有点夸张,你可能会说,可交换参与,因为你的榜样案例是关于函数组合是否是可交换的(问题F°G'= G°F)。知你的数学应该让你的问题修辞之一,在这种情况下,但是。)

EDIT 2

和不断变化的问题,以他们是否是关联也是白搭无论是。关联性是一个单一的操作符和三个参数的情况,问题是对于所有的a,b,c,(a op b)op c?= a op(b op c)。你有两个操作符(投影和选择)和一个​​参数。

这也意味着分布性问题(在其严格的数学意义上)也不适用,尽管您的场景在某些方面确实类似于算子分布的数学情况,并且给予足够的拉伸。严格的数学意义上的分配涉及两个操作符(即,采用两个参数)。预测和限制是一元的。

我认为csviri已经回答了您的问题。你应该接受它。