natural/theta join 可以替换关系代数中的交集吗?
Could natural/theta join replace intersection in Relational Algebra?
我有关系 A1 = (id1, id2)
和关系 A2 = (id, id1, id2)
,其中 id、id1、id2 是属性。
我想找到 交点 - (A1.id1 = A2.id1 ^ A1.id2 = A2.id2) of A1
和 A2
,但是在关系代数中是不可能的,因为它们有不同的模式。
我想将它们相交 不丢失 "id" 数据。
(我不能在 id1 和 id2 上简单地投影 A2 然后相交)
那么我可以应用 theta join 或 natural join 这是要到达十字路口吗?
如果匹配不存在,是否return me empty relation?
您可以将 A2
投影到 id1
和 id2
上,然后将结果与 a1
相交,或者您也可以应用自然连接,然后投影结果再次超过 id1
和 id2
。
这两种不同的方法产生相同的结果。
是的,如果连接关系中没有匹配的元组出现,它应该return空关系。
是的,交集是自然连接的特例,因此自然连接是交集的泛化,因此自然连接可以 "replace" 在任何可以使用交集的地方交集。 (但是你应该注意你的特定用例是 NOT 一个 "intersection can be used" - 原因正是你提到的:模式不相同。不要把马车后面的马。)
我有关系 A1 = (id1, id2)
和关系 A2 = (id, id1, id2)
,其中 id、id1、id2 是属性。
我想找到 交点 - (A1.id1 = A2.id1 ^ A1.id2 = A2.id2) of A1
和 A2
,但是在关系代数中是不可能的,因为它们有不同的模式。
我想将它们相交 不丢失 "id" 数据。 (我不能在 id1 和 id2 上简单地投影 A2 然后相交)
那么我可以应用 theta join 或 natural join 这是要到达十字路口吗?
如果匹配不存在,是否return me empty relation?
您可以将 A2
投影到 id1
和 id2
上,然后将结果与 a1
相交,或者您也可以应用自然连接,然后投影结果再次超过 id1
和 id2
。
这两种不同的方法产生相同的结果。
是的,如果连接关系中没有匹配的元组出现,它应该return空关系。
是的,交集是自然连接的特例,因此自然连接是交集的泛化,因此自然连接可以 "replace" 在任何可以使用交集的地方交集。 (但是你应该注意你的特定用例是 NOT 一个 "intersection can be used" - 原因正是你提到的:模式不相同。不要把马车后面的马。)