关系代数中的自然连接 - 数据库理论
Natural Join in Relational Algebra - Database Theory
如果把黄色部分删掉,我还能得出正确答案吗?它甚至是必要的吗?
假设这不是作业:
我猜|X|
是自然连接,#
表示主键属性。
S#
上突出显示的投影对于
查询结果的正确性(有效性)。
但是,它可能会提高效率:项目越早越好
在加入 之前删除重复项 。这避免了不必要的努力
首先产生重复的 natjoined 元组,投影在
sname
然后必须删除。
要知道能不能省略,得看表达式及其子表达式对应的谓词是什么
例如,最里面的限制说(我想是因为这个例子很熟悉)"Supplier S# supplies part P# in quantity QUANTITY AND P# = 3"。或者更短 "Supplier S# supplies part 3 in quantity QUANTITY".
然后在 S# 上的投影显示 "there exists some quantity q such that supplier S# supplies part 3 in that quantity"。
然后与 S 的 JOIN 表示 "Supplier S# is named SNAME, [familiar part snipped] AND there exists some quantity q such that supplier S# supplies part 3 in that quantity"。或者更短 "Supplier S# is named SNAME, [familiar part snipped] AND supplies part 3 in some quantity".
SNAME 上的投影显示 "there exists some S#, CITY, STATUS such that Supplier S# is named SNAME, [familiar part snipped] AND supplies part 3 in some quantity"。
你对省略"inner projection"的情况做同样的事情,然后尝试证明得到的谓词必须等价于这个谓词。如果可以的话,您知道包括该投影是不必要的。 [如果你做不到,你必须更加努力:-)]
如果把黄色部分删掉,我还能得出正确答案吗?它甚至是必要的吗?
假设这不是作业:
我猜|X|
是自然连接,#
表示主键属性。
S#
上突出显示的投影对于
查询结果的正确性(有效性)。
但是,它可能会提高效率:项目越早越好
在加入 之前删除重复项 。这避免了不必要的努力
首先产生重复的 natjoined 元组,投影在
sname
然后必须删除。
要知道能不能省略,得看表达式及其子表达式对应的谓词是什么
例如,最里面的限制说(我想是因为这个例子很熟悉)"Supplier S# supplies part P# in quantity QUANTITY AND P# = 3"。或者更短 "Supplier S# supplies part 3 in quantity QUANTITY".
然后在 S# 上的投影显示 "there exists some quantity q such that supplier S# supplies part 3 in that quantity"。
然后与 S 的 JOIN 表示 "Supplier S# is named SNAME, [familiar part snipped] AND there exists some quantity q such that supplier S# supplies part 3 in that quantity"。或者更短 "Supplier S# is named SNAME, [familiar part snipped] AND supplies part 3 in some quantity".
SNAME 上的投影显示 "there exists some S#, CITY, STATUS such that Supplier S# is named SNAME, [familiar part snipped] AND supplies part 3 in some quantity"。
你对省略"inner projection"的情况做同样的事情,然后尝试证明得到的谓词必须等价于这个谓词。如果可以的话,您知道包括该投影是不必要的。 [如果你做不到,你必须更加努力:-)]