我有一张桌子:
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)。
由于
答案 0 :(得分:3)
将R重命名为S
S:=ρ S / R (R)
在x,y
上加入R和S.D:=R⋈ S.x =R.x∧S.y= R.y S
这将元组的数量与(x,y)的特定值进行平方。特别是,如果(x,y)的值在R中仅出现一次,则在D中仅出现一次。
在x,y,z上加入R和S
E:=R⋈ S.x =R.x∧Syy=R.y∧S.z= R.z S
这基本上会向R添加一些列。它不会添加或删除元组。
从D减去E并投影到R
的属性F:=π x,y,z (D \ E)
这将从D中删除元组,即通过将R中的元组连接到S中的相应元组而创建的元组。剩余的元组是通过将R中的元组连接到S中的不同元组而创建的元组。特别是,如果(x,y)的值在R中只出现一次,则F中的元组不存在该值。
从R
中删除F中的元组r \˚F