2

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

所有具有较低价格替代产品的产品的 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,但是在特定产品的一个价格应该低于其替代品的情况下遇到了麻烦。

4

1 回答 1

3

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

T1 <- ρ pris = substpris (Product ⨝ Substprod)
T2 <- σ price > substprice (T1 ⨝ Product)
T3 <- π pnr,name (T2)
于 2012-10-10T13:04:50.073 回答