当且仅当元组出现一次时,如何查找表中的所有元组?

时间:2013-10-20 19:48:47

标签: relational-algebra

我有一张桌子:

x | y | z
------------
1 | 1 | *
1 | 1 | *
1 | 3 | *
2 | 2 | *
2 | 3 | *
3 | 4 | *
3 | 4 | * 
3 | 3 | *

只返回所有唯一(x,y)元组的关系代数表示是什么?

例如,我想在上表中返回以下(x,y)元组:(1,3),(2,2)(2,3)和(3,3)。

由于

1 个答案:

答案 0 :(得分:3)

  1. 将R重命名为S

    S:=ρ S / R (R)

  2. 在x,y

    上加入R和S.

    D:=R⋈ S.x =R.x∧S.y= R.y S

    这将元组的数量与(x,y)的特定值进行平方。特别是,如果(x,y)的值在R中仅出现一次,则在D中仅出现一次。

  3. 在x,y,z上加入R和S

    E:=R⋈ S.x =R.x∧Syy=R.y∧S.z= R.z S

    这基本上会向R添加一些列。它不会添加或删除元组。

  4. 从D减去E并投影到R

    的属性

    F:=π x,y,z (D \ E)

    这将从D中删除元组,即通过将R中的元组连接到S中的相应元组而创建的元组。剩余的元组是通过将R中的元组连接到S中的不同元组而创建的元组。特别是,如果(x,y)的值在R中只出现一次,则F中的元组不存在该值。

  5. 从R

    中删除F中的元组

    r \˚F