给定关系R(a,b)和S(c,d)。我执行以下查询
从R,S中选择a,b;
当S为空时,结果总是为空而R(a,b)非空。我没有得到S如何影响查询,即使不存在与S的交互。
答案 0 :(得分:0)
这是因为无论您从查询中选择的项目,您仍然在两个表之间进行连接。
如果S
为空,则连接的结果为零行,因为这是连接为您提供的。这确实是你所看到的。
如果S
有10,000行,您将获得R
中每行的那么多副本。
仅方式,您将看到来自R
的正确行数(假设没有影响加入的where
子句),如果S
恰好在它的一行。
如果您没有在S
中使用任何列进行查询,那么您实际上不应该将其列为源表。正确的查询是:
select a, b from R
答案 1 :(得分:0)
我不知道S如何影响查询,即使不应该与S
进行交互
因为A的笛卡儿积和空集是空集。参考:http://en.wikipedia.org/wiki/Empty_set
另外,请检查此Why is the Cartesian product of a set A and empty set an empty set?