我有以下table。
我想找到一个查询的情况如下:
水手谁只保留布朗储备船水手的名字(仅需意译布朗和布雷克应该出现,因为他们是唯一在预约表仅保留1船和驳船4)。
我曾尝试以下内容,甚至使用了relational algebra calculator但我坚持。我能得到的地步表中的所有行包括正确的船,但我不知道如何与最重要的是额外的船只排除项。所有帮助将不胜感激。谢谢。
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
这里是一个解决方案的草图:
reserved-by-brown
由通过布朗保留船的BN的表;这可以通过与上水手名称的限制和BN的突起接合的三个表中找到。sails
由表reserved-by-brown
通过在SN和预定的BN投影的划分而获得的表。这将产生谁也至少保留布朗保留所有船上水手的SN。non-brown
从船的BN上的投影和reserved-by-brown
的差获得该表:这包含船的所有BN布朗不保留。non-brown-reservation
的属性BN non-brown
和reservation
之间的连接。这包含没有这些船只由布朗保留全部保留。non-brown-reservation
的SN的投影之间的差异。这将包含所需的结果。