我有以下https://en.wikipedia.org/wiki/Universally_unique_identifier#Format。
我想在查询中找到以下内容:
保留 ONLY (仅保留Brown和Blake的船只,应显示的水手的水手姓名,因为它们是在保留表中唯一仅保留1号和4号船的船员) )。
我尝试了以下操作,甚至都使用过table,但是我被卡住了。我可以说到表中的所有行都包括正确的船,但是我不知道如何排除带有额外船的条目。所有帮助将不胜感激。谢谢。
X = π SN, BN (Reservation) ⨝ π SN, Name (Sailer)
Y = π SN, BN (Reservation) ⨝ π BN (Boat)
Z = X ⨝ Y
CONTAINING = π Name, SN, BN (Z) / π BN (σ Name = 'Brown' (Z)) ⨝ Z
LAST = CONTAINING - π SN, BN, Name (σ Name = 'Brown' (Z))
RESERV = γ Name; count(Name)->NUM_RESERV (CONTAINING)
π Name (σ NUM_RESERV = NUM_RESERV RESERV)
这将产生:
Sailer.Name:
Smith
Blake
Brown
答案 0 :(得分:1)
这是解决方案的草图:
让reserved-by-brown
表由布朗保留的船的BN组成;可以通过将三个表结合在一起,以限制水手姓名和BN投影来找到它。
让sails
的表通过保留的SN和BN上的投影除以表reserved-by-brown
获得。这将产生至少 保留了Brown保留的所有船只的水手的SN。
让non-brown
所得的表与Boat在BN和reserved-by-brown
上的投影的差异:该表包含Brown保留的船 non 的所有BN。
在属性BN上non-brown-reservation
和non-brown
之间建立联接。其中包含所有保留,不包括布朗保留的船只。
最后,计算帆和上一张桌子reservation
的SN投影之间的差。这将包含所需的结果。