我在一次采访中遇到了这个问题,我一直在想我所做的是否正确。假设我有一个具有以下属性的表“A”:
R S T
-----------
a1 b1 c1
a1 b2 c2
a1 b3 c3
a4 b4 c4
假设我需要计算给定 B = {[(projection)R,S (A) NATURAL JOIN (projection) S,T (A) ] NATURAL JOIN (projection)R,T (A)} 的关系代数
结果会是什么?
这是我尝试过的:
-We know (A) NATURAL JOIN (A) = A
-I did the first set of join within the square bracket. Since we had attribute 'S' in common I just yielded the result to be a table of (R S T) with the same 4 rows of tuples.
-Finally, I joined (R S T) with the second set of join where attributes 'R' and 'T' are common which I assumed will yield R S T again with 4 rows of tuples.
意思是,按照我的做法,我最终得到了 B = A。
我根本没有考虑元组,我只是根据两个投影之间的共同属性进行了自然连接。
我知道这很愚蠢..但我试图在 MySQL 中执行它,由于某种原因,当我尝试执行这样的查询时出现错误:
从 dbt2.relationalallgebra 中选择 A、B 作为 r1 自然连接(从 dbt2.relationalallgebra 中选择 B、C 作为 r2);我收到一个错误,说每个派生表都必须有自己的别名!
请帮助我澄清自然连接如何在同一张桌子上工作。
提前感谢您的帮助。