【问题标题】:relational algebra natural join关系代数自然连接
【发布时间】:2012-06-14 06:08:53
【问题描述】:

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

考虑以下两个表 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 时,为什么要打印出来呢?

【问题讨论】:

  • 如果您找到正确的答案,请接受。

标签: sql join relational-algebra natural-join


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    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(需要 distinct)和关系代数之间的主要区别

    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 中所有元组组合的集合,因此在这种情况下也返回元组 (a x y z w) 和 (a z w x y);因此 a 必须在结果投影中。

    【讨论】:

      【解决方案3】:

      [自然连接] B=D

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

      [自然连接] BD

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多