Декартово произведение

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.