如何通过关系代数找到MAX?

时间:2011-03-30 23:30:13

标签: database relational-database relational-algebra

使用数据库,如何使用关系代数找到MAX?

7 个答案:

答案 0 :(得分:70)

假设你有一个关系,A,有一个属性,'a'(减少一个更复杂的关系,这是一个关系代数中的一个简单的任务,我相信你到目前为止),所以现在你想要在A中找到最大值。

这样做的一种方法是找到A与自身的交叉产品,请务必重命名'a',以便新关系具有不同名称的属性。例如:

(将'a'重命名为'a1')X(将'a'重命名为'a2')

现在选择'a1'< 'a2',结果关系将包含除最大值之外的所有值。要获得最大值,只需找到原始关系之间的差异:

(A x A) - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))

然后使用project运算符缩减为单列,正如Tobi Lehman在下面的评论中所建议的那样。

在关系代数符号中写这个(如果我没记错的话)。请注意,最终的重命名(即ρ)只是以与原始关系中的名称相同的属性结束:

ρ a / a1 (π a1 ((A x A) - σ a1&lt; a2 (ρ a1 / a (A)xρ a2 / a (A))))

答案 1 :(得分:36)

我今天试图解决这个问题只是我的两分钱。

假设我们有A = 1,2,3

如果您使用

A x A - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))

你不会得到单个最大值而是两个列,如1 | 1,2 | 1,3 | 2,3 | 1,3 | 2,3 | 3

获得3的方法是

project(a)A - project(a1)((select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A)))

至少这是我在类似情况下必须做的事情。

希望它有助于某人

答案 2 :(得分:21)

让我们认为我们与属性A和值1,2,3

有关系
A

1
2
3

所以现在..

项目A值并使用A1重命名

A1
1
2
3

再次 项目A值并使用A2重命名

A2
1
2
3

加入A2<A1\join_{A2<A1} 所以 - 输出模式:(A2整数,A1整数)

A2<A1

1|2
1|3
2|3

听到A2值始终小于A1,因为我们join喜欢(a2<a1

现在项目A2输出如下

A2
1
2

现在使用原始属性进行差异

A diff A2

A
1
2
3

 diff

A2
1
2

输出为3 这是最大值

嗨,我知道有人必须帮助编辑,以便更好看

答案 3 :(得分:19)

我现在已经忘记了大部分relational algebra语法。仅使用SELECTPROJECTMINUSRENAME的查询将

SELECT v1.number
FROM values v1
MINUS
SELECT v1.number
FROM values v1 JOIN values v2 ON v2.number > v1.number

希望你能翻译!

答案 4 :(得分:5)

我知道这是旧的,但这是一个手写的公式,可能很方便!

enter image description here

关系A:1,2,3,4

1. First we want to PROJECT and RENAME relation A
2. We then to a THETA JOIN with the test a1<a2
3. We then PROJECT the result of the relation to give us a single set of values 
   a1: 1,2,3 (not max value since a1<a2)

4. We then apply the difference operator with the original relation so: 
   1,2,3,4 --- 1,2,3 returns 4

   4 is the Max value.

答案 5 :(得分:3)

找到MAX:

  • 策略:

    1. 查找不属于user_theme的{​​{1}}。

      • x关系重命名为MAX,以便我们可以将每个A d与所有其他人进行比较。
    2. 使用A查找前一步中未找到的x set difference

  • 查询是: enter image description here

答案 6 :(得分:1)

 Project x(A) - Project A.x
(Select A.x < d.x (A x Rename d(A)))