关系代数中的笛卡尔积

Pen*_*eni 6 relational-algebra cartesian-product

我是关系代数中的一员,我无法完全理解笛卡尔积的工作原理.

我想知道当我的两个表具有共同属性时笛卡尔积中会发生什么.当两个表没有任何共同属性时,我没有任何问题需要理解.

例如,我试图理解我自己做的例子.

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
Run Code Online (Sandbox Code Playgroud)

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

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

Vic*_*ros 6

编辑:如评论部分所述。我正在编辑此答案,以便对该问题有正确的理解。

由于这可能是重复项,因此请参考以下链接: 包含相同列的表的笛卡尔积

首先,它取决于您使用的代数。对于某些人来说,可以在具有共同属性的表之间完成笛卡尔乘积,类似于交叉联接,并且在其他代数上不允许使用笛卡尔积,因此您必须重命名属性。

ps:查找交叉联接,因为它们类似于笛卡尔积,但没有联接条件,请参见示例表的交叉联接的预期结果:

    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 
Run Code Online (Sandbox Code Playgroud)

参考链接:笛卡尔积和交叉联接有什么区别?

另外,我强烈建议您检查一下并自己尝试!

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