Интерпретация операции ограничения

СЛУЖАЩИЕ_В_ПРОЕКТЕ_2

СЛУЖАЩИЕ_В_ПРОЕКТЕ_1

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Иванов 22000.00
Петров 30000.00
Сидоров 18000.00
Федоров 20000.00
Иванова 22000.00

 

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Иванов 22000.00
Петров 30000.00
Сидоренко 18000.00
Федоренко 20000.00
Иваненко 22000.00

(a) СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 MINUS СЛУЖАЩИЕ_В_ПРОЕКТЕ_2

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Сидоров 18000.00
Федоров 20000.00
Иванова 22000.00

 

(b) <NOT> СЛУЖАЩИЕ_В_ПРОЕКТЕ_2

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Иванов 22000.00
Иванов 22000.00
Иванов 22000.00
Иванов 30000.00
…. …. …. ….
Петров 30000.00
Петров 30000.00
…. …. …. ….
Сидоров 18000.00
…. …. …. ….
Федоров 20000.00
…. …. …. ….
Иванова 22000.00
…. …. …. ….

 

(c) СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 <AND> <NOT> СЛУЖАЩИЕ_В_ПРОЕКТЕ_2

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Сидоров 18000.00
Федоров 20000.00
Иванова 22000.00

 

Рис. 4.7. Выразимость операции MINUS через операции <NOT> и <AND>

 

 

В Лекции 3 мы определяли операцию ограничения r WHERE comp, где r – отношение, а comp – простое условие ограничения вида (a comp-op b), где а и b – имена атрибутов ограничиваемого отношения, для которых осмысленна операция сравнения comp-op, либо вида (a comp-op const), где a – имя атрибута ограничиваемого отношения, а const – литерально заданная константа. Операцией сравнения comp-op может быть “=”, “¹”, “>”, “<”, “³”, “£”. Покажем, как можно выразить операцию ограничения с помощью базовых операций Алгебры A для всех допустимых простых условий.

 

Для иллюстраций будем использовать отношение СЛУЖАЩИЕ_1{СЛУ_НОМЕР,СЛУ_ИМЯ,СЛУ_ЗАРП,РУК_НОМ} (рис. 4.8). Атрибут РУК_НОМсодержит уникальные номера служащих, являющихся руководителями проектов, и определен на том же домене, что и СЛУ_НОМЕР. Мы снова предположим (для упрощения примеров), что множества значений доменов, на которых определены атрибуты отношения СЛУЖАЩИЕ_1, ограничены значениями, содержащимися в теле этого отношения. Начнем с обсуждения операции WHERE с условием вида a comp-op const.

Предположим, что мы хотим найти всех служащих с заработной платой, равной 11,000 руб. Возьмем отношение ЗАРП_20000{СОТР_ЗАРП}*. Тогда легко видеть, что результат операции СОТРУДНИКИ_1<AND> ЗАРП_11000в точности совпадает с результатом операции СОТРУДНИКИ_1 WHERE СОТР_ЗАРП= 20000.00 (рис. 4.8).