Как уже было сказано ранее, унарная операция
разности двух отношений реализуется аналогично операции пересечения.
Здесь также, кроме главного запроса с оператором Select, используется
второй, вспомогательный запрос – так называемый подзапрос.
Но в отличие от воплощения в жизнь предыдущей операции,
при реализации операции разности необходимо использовать другое ключевое
слово, а именно not in, что в дословном переводе означает «не в» или (как уместно перевести в нашем рассматриваемом случае) – «не содержится в».
Итак, пусть, как и в предыдущем примере, у нас имеются две схемы отношений (R1 и R2), приблизительно заданные:
R1 (ключ, …) и
R2 (ключ, …);
Как видим, среди атрибутов этих отношений снова заданы ключевые атрибуты.
Таким образом, получаем следующий вид для представления в языке структурированных запросов операции разности:
Select *
From R1
Where ключ not in
(Select ключ From R2);
Таким образом, в результирующее отношение выбираются только те кортежи отношения R1, ключ которых не содержится в списке ключей отношения R2. Если рассматривать запись буквально, то действительно получается, что из отношения R1 «вычли» отношение R2.
Отсюда делаем вывод, что условие выборки в этом операторе записано
верно (ведь определение разности двух отношений выполняется) и
использование ключей, как и в случае реализации операции пересечения,
полностью оправдано.
Два случая применения «метода ключей», которые мы
рассмотрели, являются самыми распространенными. На этом изучение
использования ключей в составлении операторов, представляющих отношения,
завершим. Все оставшиеся бинарные операции реляционной алгебры
записываются иными способами.
|