我有关系A1 = (id1, id2)
和关系A2 = (id, id1, id2)
,其中id,id1,id2是属性。
我想找到A1
和{{1}的 交集 - (A1.id1 = A2.id1 ^ A1.id2 = A2.id2) 但是关系代数是不可能的,因为它们有不同的模式。
我想与他们相交不会丢失“id”数据。 (我不能简单地将项目A2投影到id1和id2然后相交)
那么我可以在这里应用 theta join 或 自然加入 来到达交汇点吗?
如果匹配不存在,它会返回空关系吗?
答案 0 :(得分:2)
是的,如果在连接的关系中没有匹配的元组,它应该返回空关系。
是的,交集是自然连接的特殊情况。自然连接是交集的概括,而且自然连接可以"替换"可以使用交叉点的交叉点。 (但是你应该记住,你的特定用例是 NOT 可以使用"交叉点" - 原因正是你提到的:架构不是&# 39;相同。不要把马放在推车后面。)
答案 1 :(得分:0)
您可以将A2
投放到id1
和id2
上,然后将结果与a1
相交,或者您也可以应用自然联接,然后重新投影结果id1
和id2
。
这两种不同的方法产生相同的结果。