2012-10-22 1 views
3

Я следующие таблицы:Реляционная алгебра - список имен сотрудников, которые не работают в проекте 1

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

ответ

3

Вы сначала найдете всех сотрудников, которые do работают над проектом. Те, кто этого не делает, производятся оператором реляционной разницы (минус).

+0

Спасибо Tegiri. – Johny

2

Благодарим вас за отзыв Тегири.
Решение:

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

 Смежные вопросы

  • Нет связанных вопросов^_^