-1

如果我删除了黄色部分,我还能想出正确的答案吗?它甚至是必要的吗?

图片

4

2 回答 2

2

为了知道是否可以省略它,您必须查看与表达式及其子表达式相对应的谓词是什么。

例如,最里面的限制说(我推测是因为这个例子很熟悉)“供应商 S# 供应 P# 的数量为 QUANTITY AND P# = 3”。或更短的“供应商 S# 供应第 3 部分的数量 QUANTITY”。

然后对 S# 的预测说“存在一些数量 q,使得供应商 S# 供应该数量的第 3 部分”。

与 S 的 JOIN 然后说“供应商 S# 被命名为 SNAME,[熟悉的部分被剪断] 并且存在一些数量 q,使得供应商 S# 供应该数量的部分 3”。或更短的“供应商 S# 被命名为 SNAME,[熟悉的部分被剪断] 并以一定数量供应第 3 部分”。

SNAME 上的投影然后说“存在一些 S#、CITY、STATUS,使得供应商 S# 被命名为 SNAME,[熟悉的部分被剪断]并提供一定数量的第 3 部分”。

对于省略“内部投影”的情况,您也可以这样做,然后尝试证明获得的谓词必须与这个等价。如果可以,您知道包含该投影是不必要的。[如果你不能,你必须更加努力:-)]

于 2018-05-20T14:57:25.913 回答
1

假设这不是家庭作业:

我猜|X|是自然连接并#表示主键属性。

就查询结果的正确性(有效性)而言,突出显示的投影S#不是必需的。

但是,它可能会提高效率:在加入之前尽可能早地删除重复项目。这避免了首先产生重复的 natjoined 元组的不必要的努力, sname然后投影必须删除这些元组。

于 2018-03-28T21:40:24.500 回答