我有一张桌子:
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)。
谢谢
我有一张桌子:
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)。
谢谢
将 R 重命名为 S
S := ρ S/R (R)
在 x,y 上加入 R 和 S
D := R ⋈<sub>Sx = Rx ∧ Sy = Ry S
这将元组的数量与 (x,y) 的特定值平方。特别是,如果 (x,y) 的值在 R 中仅出现一次,则它在 D 中仅出现一次。
在 x,y,z 上加入 R 和 S
E := R ⋈<sub>Sx = Rx ∧ Sy = Ry ∧ Sz = Rz S
这基本上向 R 添加了一些列。它不会添加或删除元组。
从 D 中减去 E 并投影到 R 的属性
F := π x,y,z (D\E)
这会从 D 中删除元组,这些元组是通过将 R 中的元组连接到 S 中的相应元组而创建的。剩余的元组是通过将 R 中的元组连接到 S 中的不同元组而创建的元组。特别是,如果一个值对于 (x,y) 在 R 中只出现一次,在 F 中不存在具有该值的元组。
从 R 中删除 F 中的元组
R\F