0

大家好,我即将参加考试,但在练习考试的两个问题上没有得到讲师的太多帮助。她已经提供了答案,但没有回答我关于答案的问题,我希望这里有人能够解释为什么答案是这样的。

考虑以下两个表 R 和 S 及其实例:

R       S 
A B C  D E 
a x y  x y 
a z w  z w 
b x k    
b m j    
c x y    
f g h  

a) πA(R[natural join]B=D S)

答案是(a,b,c),为什么不是(a,a,b,c)?投影是否使它与众不同?


b) π A(R[natural join] B<>D S) 

答案是(a,b,c,f),为什么是a答案?b=d 当值是 x 和 z 时,为什么要打印出来呢?

4

3 回答 3

1

a) 在关系代数中,投影算子提供重复消除。在 SQL 中,这不是默认操作,但它适用于关系代数。这是我的来源。目前,我不记得为什么它会重复消除,但这是我的数据库教授,他知识渊博。(我认为这是因为关系代数使用集合逻辑并且集合没有重复项。)

b) 2 个表的连接在 2 个表之间创建了一个 CROSS PRODUCT。你有 6 行和 2 行。所以叉积是 6x2 = 12 行。对于表 R 的第 1 行,您有 ax y。这将与 xy AND zw 配对,产生 [axyxy] 和 [axyzw]。第二对对这个关系代数语句有效。B 列和 D 列不匹配 x != z。

于 2012-06-14T06:21:55.780 回答
1
a) πA(R[natural join]B=D S)
the answer being (a,b,c), why isn't it (a,a,b,c)? does a projection make it distinct?

在关系代数中,不允许重复元组;sql(需要不同的地方)和关系代数之间的主要区别

b) π A(R[natural join] B<>D S) 
the answer being (a,b,c,f), why is a an answer? b=d both times when values are x and z, so why is this being printed out?

自然连接操作返回 R 和 S 中所有元组组合的集合,因此在这种情况下也返回元组 (axyzw) 和 (azwxy);因此 a 必须在结果投影中。

于 2012-06-14T06:29:00.327 回答
0

【自然连接】B=D

这不是自然连接,因为“自然连接”是一种仅通过同名属性连接关系的连接。您描述的构造可能在某些地方被标记/称为“等值连接”左右,但它肯定不是“自然连接”。

[自然连接] B<>D

这不是自然连接,因为“自然连接”是将参数关系的元组连接在一起的连接,当且仅当属性值相等时

你被无可救药地误导和误导了。参考资料:《数据库系统简介》,CJDate。这对你的考试没有任何好处,但如果你以后想从事数据库技术的工作,记住这一点可能是值得的。

但是要回答您的实际问题(与前面的答案一致):

a) 属性值 'a' 不能在投影结果中出现两次,因为投影产生了一个关系,而一个关系被定义为一个集合,集合不能包含重复项。

b) [non-] 自然连接包含元组 (axyzw) 和 (azwxy)。来自 R 的“第一个”元组与来自 S 的“第二个”元组,反之亦然。投影包括结果 (a)。

于 2012-06-14T11:15:49.620 回答