两次检查同一属性的条件?
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。
有个问题想问大家,网上找了好久都找不到答案。
假设我们有以下 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。