列转换的关系代数规则
Relational Algebra rule for column transformation
在关系代数中转换列的规则是什么?例如,我想将一列的所有值除以该列的平均值。我可以使用聚合规则获得平均值。但是找不到列操作的规则。
P.S: 我对这个规则很感兴趣(比如\Pi是用来做投影的)
对此没有标准方法。也没有单一的关系代数,所以你应该给你的参考。
假设您以名为 DIVIDE
的常量基关系形式提供列值的除法运算符,其中 dividend
/divisor
=quotient
.我将使用最简单的代数,标题是属性名称集。假设我们有输入关系 R
与列 c
& 平均值 A
。我们想要像 R
这样的关系,但是每一列 c
的值设置为其原始值除以 A
.
此版本从最简单的规范表达式开始,机械地转换为代数:
/* rows where
EXISTS dividend [R(dividend) & DIVIDE(dividend, A, c)]
*/
PROJECT c (
RENAME c\dividend (R)
NATURAL JOIN
RENAME quotient\c (
PROJECT dividend, quotient (SELECT divisor=A (DIVIDE))))
这个版本有一个不太简洁的规范表达式,它是从更简洁的代数中机械地派生出来的:
/* rows where
EXISTS quotient [
quotient=c
& THERE EXISTS c, divisor [
R(c) & DIVIDE(c, divisor, quotient) & divisor=A]]
*/
RENAME quotient\c (
PROJECT quotient (
R NATURAL JOIN RENAME dividend\c (SELECT divisor=A (DIVIDE))))
在关系代数中转换列的规则是什么?例如,我想将一列的所有值除以该列的平均值。我可以使用聚合规则获得平均值。但是找不到列操作的规则。 P.S: 我对这个规则很感兴趣(比如\Pi是用来做投影的)
对此没有标准方法。也没有单一的关系代数,所以你应该给你的参考。
假设您以名为 DIVIDE
的常量基关系形式提供列值的除法运算符,其中 dividend
/divisor
=quotient
.我将使用最简单的代数,标题是属性名称集。假设我们有输入关系 R
与列 c
& 平均值 A
。我们想要像 R
这样的关系,但是每一列 c
的值设置为其原始值除以 A
.
此版本从最简单的规范表达式开始,机械地转换为代数:
/* rows where
EXISTS dividend [R(dividend) & DIVIDE(dividend, A, c)]
*/
PROJECT c (
RENAME c\dividend (R)
NATURAL JOIN
RENAME quotient\c (
PROJECT dividend, quotient (SELECT divisor=A (DIVIDE))))
这个版本有一个不太简洁的规范表达式,它是从更简洁的代数中机械地派生出来的:
/* rows where
EXISTS quotient [
quotient=c
& THERE EXISTS c, divisor [
R(c) & DIVIDE(c, divisor, quotient) & divisor=A]]
*/
RENAME quotient\c (
PROJECT quotient (
R NATURAL JOIN RENAME dividend\c (SELECT divisor=A (DIVIDE))))