关系代数 - 列出在项目中不起作用的员工的姓名1

时间:2012-10-22 00:58:38

标签: relational-algebra

我有以下表格:

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

2 个答案:

答案 0 :(得分:3)

您首先会找到的所有员工。那些不是由关系差异(减号)算子产生的。

答案 1 :(得分:2)

感谢您提示Tegiri。
解决方案是:

π name (Employee) - ( π name (σ project_cod = 1 (Employee ∞ Work)))