列转换的关系代数规则

时间:2018-04-01 07:41:29

标签: relational-database relational-algebra

关系代数中转换列的规则是什么?例如,我想将列的所有值除以该列的平均值。我可以使用聚合规则获得平均值。但无法找到列操作的规则。 P.S:我对规则感兴趣(比如\ Pi用于投影)。

1 个答案:

答案 0 :(得分:2)

对此没有标准方法。也没有单一的关系代数,所以你应该给你的参考。

假设您以一个名为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