在σ中具有并集是否与具有两个查询相同?

时间:2019-04-24 14:22:57

标签: relational-algebra

我有这个问题:

  

波士顿或芝加哥的员工叫什么名字?

具有以下关系:

employees(id, name)workIn(id, city)

两个关系中的id指的是同一事物(员工的ID)

我写的查询是:

Π name (σ city="Boston" U city="Chicago"(employees ⋈ workIn))

该问题的解决方案是:

Π name (σ city="Boston"(employees ⋈ workIn)) U
Π name (σ city="Chicago"(employees ⋈ workIn))

两个查询返回的结果是否相同?还是我的查询错了?

如果我的查询错误,返回的值会有什么不同?

1 个答案:

答案 0 :(得分:2)

您的查询是错误的,因为您在两个逻辑条件U之间使用Union运算符(city="Boston" U city="Chicago")(这是没有意义的,因为Union是集合运算符,而不是逻辑运算符)

在条件中使用的逻辑运算符是“或”(写为),当两个成分中的任何一个为真(或同时为真)时,使复合条件为真。这里)。

所以正确的表达是:

Π name (σ city="Boston" ∨ city="Chicago"(employees ⋈ workIn))

这等效于带有Union的表达式:

Π name (σ city="Boston"(employees ⋈ workIn)) U
Π name (σ city="Chicago"(employees ⋈ workIn))