sql - 具有多重连接的关系代数

标签 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 路连接,但在特定产品的一个价格应低于其替代品的条件下遇到了麻烦。

最佳答案

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

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

关于sql - 具有多重连接的关系代数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12818560/

相关文章:

sql - SQL Server 表索引问题

SQL 到关系代数

relational-algebra - 银行业务情景的关系代数

relational-database - 关系v分层数据模型

relational-database - RMDB 表中的 "columns"是否有顺序?

php - 识别关系相对于非识别关系的优缺点,反之亦然

MySQL,选择具有许多一对多关系的条目的最佳方法?

MySQL 选择与我的数据匹配的列

sql - 使用SQLServer查询elasticSearch数据