我如何使用一个变量的关系代数查询?

问题描述 投票:0回答:1

我有以下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
relational-database relational-algebra
1个回答
1
投票

这里是一个解决方案的草图:

  1. reserved-by-brown由通过布朗保留船的BN的表;这可以通过与上水手名称的限制和BN的突起接合的三个表中找到。
  2. sails由表reserved-by-brown通过在SN和预定的BN投影的划分而获得的表。这将产生谁也至少保留布朗保留所有船上水手的SN。
  3. non-brown从船的BN上的投影和reserved-by-brown的差获得该表:这包含船的所有BN布朗不保留。
  4. non-brown-reservation的属性BN non-brownreservation之间的连接。这包含没有这些船只由布朗保留全部保留。
  5. 最后,计算帆和上表non-brown-reservation的SN的投影之间的差异。这将包含所需的结果。
© www.soinside.com 2019 - 2024. All rights reserved.