database - 我怎样才能用关系代数找到MAX?

标签 database relational-database relational-algebra

使用数据库,如何使用关系代数找到 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/a1a1((A x A) - σa1 < a2a1/a (A) x ρa2/a(A))))

关于database - 我怎样才能用关系代数找到MAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5493691/

相关文章:

mysql - 基于MySQL的多表选择

php - 如何获取 max(colUmn) 值,其中 colUmn 是 mySQL 中的 TimeStamp 类型

mysql - 将数据与 mysql 中的一列进行匹配

php - PHP 和 MySQL 的 MCQ 考试系统

sql - 关系索引数据库包装器

php - 在 PHP/MySQL 或 PHP/NoSQL 中建模隐私设置

mysql - 在这种情况下,为什么 mysql "where not exist "的性能比 "not in"好得多? "where not exists"的机制是什么?

sql - 选择问题

mysql - 我们怎么能不允许 mysql 中的枚举不为空?

java - Armstrong Axioms 的所有属性都可以应用于多值依赖吗?