使用数据库,如何使用关系代数找到 MAX?
最佳答案
假设你有一个关系 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))
然后按照 Tobi Lehman 在下面评论中的建议,使用 project
运算符减少到单个列。
用关系代数符号来写这个(如果我没记错的话)。注意最后的重命名(即 ρ)只是以一个与原始关系同名的属性结束:
ρa/a1(πa1((A x A) - σa1 < a2 (ρa1/a (A) x ρa2/a(A))))
关于database - 我怎样才能用关系代数找到MAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5493691/