Декартово произведение
EXCEPT
EXCEPT
SELECT X,Y,…Z FROM B
Для приведенного примера SQL – запрос соответствует структуре:
SELECT Табельный номер, Фамилия, Зарплата FROM A
SELECT Табельный номер, Фамилия, Зарплата FROM B
Определение. Декартовым произведением двух отношений и
называется отношение, схема которого является объединением схем отношений
и
:
,
а экземпляр включает кортежи, полученные сцеплением кортежей отношений и
:
,
таких, что ,
.
Синтаксис операции декартового произведения:
A ´ B
Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.
Замечание. Мощность произведения A ´ B равна произведению мощностей отношений и
, т.к. каждый кортеж отношения
соединяется с каждым кортежем отношения
.
Замечание. Если в отношения и
имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать.
Пример. Пусть даны два отношения и
с информацией о поставщиках и деталях:
Таблица 6 Отношение A (Поставщики)
Номер поставщика | Наименование поставщика |
1 | Иванов |
2 | Петров |
3 | Сидоров |
Таблица 7 Отношение B (Детали)
Номер детали | Наименование детали |
1 | Болт |
2 | Гайка |
3 | Винт |
Декартово произведение отношений и
будет иметь вид:
Таблица 8 Отношение A ´ B
Номер поставщика | Наименование поставщика | Номер детали | Наименование детали |
Иванов | Болт | ||
Иванов | Гайка | ||
Иванов | Винт | ||
Петров | Болт | ||
Петров | Гайка | ||
Петров | Винт | ||
Сидоров | Болт | ||
Сидоров | Гайка | ||
Сидоров | Винт |
Замечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций, в контексте некоторых запросов.
Замечание. По умолчанию операции UNION, INTERSECT и EXCEPT удаляют из результирующих отношений повторяющиеся строки. Но если требуется оставить все строки, в SQL используются специальные формы операций UNION ALL, INTERSECT ALL и EXCEPT ALL.