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的结果,那将非常有用!
编辑:如评论部分所述。我正在编辑此答案,以便对该问题有正确的理解。
由于这可能是重复项,因此请参考以下链接: 包含相同列的表的笛卡尔积
首先,它取决于您使用的代数。对于某些人来说,可以在具有共同属性的表之间完成笛卡尔乘积,类似于交叉联接,并且在其他代数上不允许使用笛卡尔积,因此您必须重命名属性。
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