0

我有一张桌子:

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)。

谢谢

4

1 回答 1

4
  1. 将 R 重命名为 S

    S := ρ S/R (R)

  2. 在 x,y 上加入 R 和 S

    D := R ⋈<sub>Sx = Rx ∧ Sy = Ry S

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

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

    E := R ⋈<sub>Sx = Rx ∧ Sy = Ry ∧ Sz = Rz 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

于 2013-10-20T20:18:39.577 回答