具有多个连接的关系代数

时间:2012-10-10 11:45:12

标签: sql relational-algebra

我正在尝试将以下问题写成关系代数:

所有具有较低价格的替代产品的产品的Pnr和pname。

我的关系是这些:

Product(Pnr, Pname, Price) //Product info
Substprod(Pnr, Subst-Pnr) //Product which can replace other products

如果我在SQL中执行它,它看起来像这样:

SELECT p.pnr, p.pname
FROM Product p1, Substprod s, Product p2
WHERE p1.pnr = s.pnr
AND s.subst_pnr = p2.pnr
AND p1.price > p2.price

但是我看不出如何在关系代数中得到相同的结果。我猜我也需要在这里进行3-way-join,但是在特定产品的一个价格低于其替代品的情况下遇到问题。

1 个答案:

答案 0 :(得分:2)

也许是这样的?确切的语法有点生疏,但总的想法就在那里。

T1 <- ρ pris = substpris (Product ⨝ Substprod)
T2 <- σ price > substprice (T1 ⨝ Product)
T3 <- π pnr,name (T2)