查询:
查找已预订所有船只的水手姓名
可以使用关系代数表示为:
1. πsname ( ((σsid,bid Reserves) / (σbid Boats)) ⋈ Sailors)
根据关系代数,也可以使用基本代数运算符表示除法,如下所示:
A/B= πx(A) - πx((πx(A) * B) - A )
因此,如果我将语句1转换为语句2,则
Reserves/Boats= πsid(Reserves) - πsid(( πbid(Reserves) * Boats) - Reserves )
我如何使用 SQL 表示语句3
,并且要与关系代数中的方式相同(即不使用除了minus/Except(-) and Cross join(*)
以外的任何操作符)。
我尝试在不使用NOT EXISTS 和 EXISTS
条件的情况下实现它。
表的模式如下:
Sailors
(sid: integer, sname: string, rating: integer, age: real)
Boats
(bid: integer, bname: string, color: string)
Reserves
(sid: integer, bid: integer, day: date)