我有以下表格:
Employee
|name|employee_cod|
Project
|name|project_cod|
Work
|employee_cod|project_cod|
那么,我如何列出不工作的员工的姓名, 例如,在project_cod = 1的项目中,使用关系代数?
以下不起作用:
π(employee.name(σ work.project_cod != 1 (Employee ∞ Work ∞ Project)
因为如果我在工作表中有以下数据:
| employee_cod | project_cod |
-------1--------------1-------
-------1--------------2-------
-------1--------------3-------
-------2--------------2-------
此σ work.project_cod != 1
将导致:
| employee_cod | project_cod |
-------1--------------2-------
-------1--------------3-------
-------2--------------2-------
但是不应该返回代码= 1的员工,因为它参与了项目1
答案 0 :(得分:3)
您首先会找到做的所有员工。那些不是由关系差异(减号)算子产生的。
答案 1 :(得分:2)
感谢您提示Tegiri。
解决方案是:
π name (Employee) - ( π name (σ project_cod = 1 (Employee ∞ Work)))