关系代数中的笛卡尔积
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
我完全是关系代数的初学者,我无法完全理解笛卡尔积的工作原理。
我想知道当我的两个 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