3

我有以下表格:

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-------

但是code = 1的员工不应该被退回,因为它参与了项目1

4

2 回答 2

3

您首先找到从事该项目的所有员工。那些不是由关系差异(减)运算符产生的。

于 2012-10-22T17:21:33.430 回答
2

谢谢你的提示 Tegiri。
解决方案是:

π name (Employee) - ( π name (σ project_cod = 1 (Employee ∞ Work)))
于 2012-10-23T05:01:26.337 回答