连接属性时的自然连接包含重复的元组

时间:2017-05-14 01:11:40

标签: database relational-database relational-algebra

我正在尝试解决以下问题。

如果我们从39开始查看解决方案部分b)

以下哪个关系代数声明会产生这种关系?

enter image description here

enter image description here

*代表自然联接。

我在这个小部分遇到问题: (σ_weekdays='MWF'(飞行))* Flight_leg

(σ_weekdays='MWF'(Flight))返回元组DL3和BA12 现在自然加入Flight_leg,但该表中有两个DL3。

结果是元组:

  1. DL3,Delta,MWF,1,JFK,6:23,LHR,13:54
  2. DL3,Delta,MWF,2,LHR,15:20,TXL,16:03
  3. BA12,British Airways,MWF,1,LHR,5:23,JFK,13:24
  4. 或者,

    1. DL3,Delta,MWF,1,JFK,6:23,LHR,13:54
    2. BA12,British Airways,MWF,1,LHR,5:23,JFK,13:24
    3. 排除第二个重复名称的元组?

2 个答案:

答案 0 :(得分:1)

查找自然联接的 defintion 。它返回一组元组值,这些值可以通过组合来自每个参数的一个元组来实现,这些元组共享相同的公共属性的子元素值。这里设置的公共属性是{flight_number}。 Flight限制中的两个DL3元组中的每一个都可以与Flight_leg中的一个DL3元组组合,前一个表中的一个BA12元组可以与后一个表中的一个BA12元组组合。所以结果是第一选择。

  
      
  1. DL3,Delta,MWF,1,JFK,6:23,LHR,13:54
  2.   
  3. DL3,Delta,MWF,2,LHR,15:20,TXL,16:03
  4.   
  5. BA12,British Airways,MWF,1,LHR,5:23,JFK,13:24
  6.   

(为什么它可能是其他什么?)

答案 1 :(得分:-1)

这里的答案应该是选项e) 实际上,我所看到的“ *”表示笛卡尔积,而自然连接的含义是在此处明确将其表示为⋈符号。

回到您的问题。在选项e)中,首先从关系Flight_leg中选择dep_time <11:00的元组,其到达机场代码分别为5:23的LHR和6:23的JFK。 现在,您在此处看到的联接实际上是theta联接,这使我们得到airport_code = arrival_airport_code为JFK和LHR,如果我们从中投影城市,则只需得到伦敦和NYC。

还在此处共享链接以完全清除您的疑问,请查看What does the multiply operator do relational algebra?

我还建议您访问Wikipedia或一些标准DBMS书籍,以了解联接及其类型。