0

关于关系代数的一个非常简单的问题,我在互联网或/和一些书中找不到任何答案。

假设关系employee(key,salary,bonus),我想创建一个新关系R(key,totalMoney),其中totalMoney = Salary + Bonus。我的尝试是:

R1(key,totalMoney) = 投影密钥,salary (员工)

R2(key,totalMoney) = 投影密钥,奖金(员工)

R =关键聚合总和totalMoney (R1 U R2)

可以吗?

但是,如果没问题,它并不能解决我所有的问题:(

假设我现在想要获取 RT2(key, totalMoney * 2)。为此,我的尝试是:

RT2 = update totalMoney <- totalMoney*2 (R) //“update”是一个关系代数运算符

可以吗?

我认为我的答案不是(非常)好。如果您能帮助我找到一个不错的解决方案,我将不胜感激。

谢谢

4

2 回答 2

1

Codd 的原始代数没有包括这样的运算,因为他坚信这样的计算应该在应用程序中完成。

唉,如今所教的大部分内容仍然非常接近 Codd 的这些原始想法。现在已经40岁了。因此,唉,在这 40 年中发生的所有演变大多都被忽视了。

其中之一是 EXTEND 运算符,我相信它是由 Chris Date 和 Hugh Darwen 引入的。该操作员会完全满足您的需求。

于 2013-09-19T22:34:51.573 回答
0

传统的关系代数不支持算术运算。然而,已经进行了不同的尝试来扩展它:例如Gabbay 和 McBrian讨论了选择和投影算子的算术扩展,而Boncz 等人。已经为他们的 XQuery 编译器 Pathfinder 提出了许多关系代数扩展(包括算术运算)。

于 2013-09-07T13:30:02.977 回答