Интерпретация операции ограничения
СЛУЖАЩИЕ_В_ПРОЕКТЕ_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).