我有这个问题:
波士顿或芝加哥的员工叫什么名字?
具有以下关系:
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))
两个查询返回的结果是否相同?还是我的查询错了?
如果我的查询错误,返回的值会有什么不同?
答案 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))