我正在尝试将以下问题写成关系代数:
所有具有较低价格的替代产品的产品的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,但是在特定产品的一个价格低于其替代品的情况下遇到问题。
答案 0 :(得分:2)
也许是这样的?确切的语法有点生疏,但总的想法就在那里。
T1 <- ρ pris = substpris (Product ⨝ Substprod)
T2 <- σ price > substprice (T1 ⨝ Product)
T3 <- π pnr,name (T2)