关系代数中的减法?

问题描述 投票:0回答:2

如何减去具有不同数量的属性和元组的关系?

例如,如果我有一个具有 3 个属性和 10 个元组的关系 A,以及具有 2 个属性和 5 个元组的关系 B,那么 A-B 和 B-A 可能吗?

database relational-database relational-algebra
2个回答
2
投票

你没有提到你们的两个关系是否有任何共同的属性。正如 Thanatos 所说:严格来说,对于关系 MINUS,必须有相同的属性集。

但是想想自然连接:这种“匹配”在共同属性上具有相同值的元组。然后有一个操作(有时称为“antijoin”(▷)http://en.wikipedia.org/wiki/Relational_algebra#Antijoin_.28.E2.96.B7.29),它从左侧参数返回元组不要 匹配共同属性的值。

在关系具有相同属性(联合兼容)的情况下,反连接与 MINUS 相同。

反连接的结果与左参数具有相同的属性。所以是的,你可以同时得到 A ▷ B 和 B ▷ A(也就是说,用反连接代替减号);结果将具有不同的标题以及不同的元组。

Antijoin 大致相当于 SQL NOT EXISTS(选择公共属性相等)。 SQL 的某些方言具有 EXCEPT 运算符。这个 doco 比较了 EXCEPT 和 NOT EXISTS: http://download.oracle.com/otndocs/products/rdb/pdf/tech_archive/ except_intersect_minus_ops.pdf 但是(像往常一样,与 RA 不同)SQL 不会通过相同的方式链接表 -命名属性。

您可以通过列名称与 EXCEPT CORRESPONDING 进行链接 - 但请仔细阅读该文档! SQL 无法实现您对 RA 的期望。

感兴趣的是:教程 D 的反连接名称是 NOT MATCHING——这几乎说明了一切。


0
投票

参见维基百科

关系代数使用集合论中的集合并、集合差和笛卡尔积,但为这些运算符添加了额外的约束。

对于集合并集和集合差集,所涉及的两个关系必须是并集兼容的,即两个关系必须具有相同的属性集。

就你而言,基本上没有。这是由于不同的属性造成的:您如何定义两组本质上不同的事物之间的“减法”?

如果您对减法应该如何进行有一些标准/方法,那么关系代数很可能可以表达您想要做的事情;集合减法可能不是正确的工具。

© www.soinside.com 2019 - 2024. All rights reserved.