两次检查同一属性的条件?

Checking for a condition of the same attribute twice?

有个问题想问大家,网上找了好久都找不到答案。

假设我们有以下 table 可以使用。 员工(站,姓名)。 现在,如果我想找出在 A 站工作的 employee/s 的名称,我可以这样做:

πname(σstation='A'(员工))

这应该return在A楼工作的employee/s的name/s

但在检查一名员工是否在 2 个不同的站点工作时,我有点困惑。当一个属性在 2 个条件下使用两次时,我从未在关系代数中看到过这种情况。所以我想问大家的问题是,这是否是一种合法的做法?

πname(σstation='A'^station='B'(员工))

这样可以吗?请问这个return是A楼和B楼work/s那个employee/s的名字吗?我可以这样做,还是我违反了一些关系代数规则?

非常感谢任何可以帮助我解决我的疑问的人。

因为每一行只有一个站,所以你提出的表达式永远不会 return 任何东西(没有站既等于 A 又等于 B!)。

因此,解决您的问题的一种方法是找到站 = 'A' 的所有员工,并使用交集运算符将他们与站 = 'B' 的员工相交:

πname(σstation='A'(employee)) ∩ πname(σstation='B'(employee))

这样,如果一个员工同时在A站和B站工作,则returned。