关系代数中的笛卡尔积

Cartesian Product in Relational Algebra

我完全是关系代数的初学者,我无法完全理解笛卡尔积的工作原理。

我想知道当我的两个 table 具有共同属性时笛卡尔积会发生什么。当 table 没有任何共同属性时,我可以理解。

例如,我试着理解我自己做的例子。

T1                          T2
----------                  -----------
A   B   C                   A    B   D
1   4   7                   1    4   8
2   5   3                   2    9   5
4   7   1                   7    3   2

如果我想做 T1 x T2,当我想写 T1 A=1 , B=4 , C=7 第一行和 T2 A=2 ,B=9 ,C=5 第二行的串联时,会发生什么到 A 列和 B 列 ?

如果你能告诉我 T1 x T2 的结果,那将非常有用!

编辑:如评论部分所述。我正在编辑此答案以正确理解问题。

由于这可能是重复的,请参考此 link:

首先,这取决于您使用的代数。对于一些,笛卡尔积可以在具有共同属性的表之间完成,类似于交叉连接,而在其他代数上,笛卡尔积是不允许的,因此您必须重命名属性。

p.s:查找交叉连接,因为它们类似于笛卡尔积但没有连接条件,查看示例表的交叉连接的预期结果:

    T1                      T2                T1 X T2
----------              -----------     =    ----------------------------
A   B   C                A    B   D          T1.A T1.B T1.C T2.A T2.B T2.D
1   4   7                1    4   8           1     4   7    1    4    8
2   5   3                2    9   5           1     4   7    2    9    5
4   7   1                7    3   2           1     4   7    7    3    2
                                              2     5   3    1    4    8
                                              2     5   3    2    9    5
                                              2     5   3    7    3    2
                                              4     7   1    1    4    8
                                              4     7   1    2    9    5
                                              4     7   1    7    3    2 

参考link:What is the difference between Cartesian product and cross join?

此外,我强烈建议您查看并亲自尝试!

RelaX - 关系代数计算器 http://dbis-uibk.github.io/relax/index.htm