列转换的关系代数规则

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))))

另见 Relational algebra - recode column values