Теоретико-множественные операторы
Объединениемдвух совместимых по типу отношений M и N называется отношение с тем же заголовком, что и у M и N, и телом, состоящим из кортежей, принадлежащих или M или N, или обоим отношениям.
Синтаксис: M UNION N
Примечание: объединение, как и любое отношение, не может содержать одинаковых кортежей. Поэтому, если некоторый кортеж входит и в отношение M, и отношение N, то в объединение он входит один раз.
Пример 2: Пусть даны два отношения M и N с информацией о сотрудниках (таблицы 3.2 и 3.3).
Таблица 3.2 - Отношение M Таблица 3.3 - Отношение N
ИД_Сотр | Фамилия | Зарплата | ИД_Сотр | Фамилия | Зарплата | |
1 | Андреев | 1 | Андреев | |||
2 | Поляков | 2 | Танеев | |||
3 | Сидоров | 3 | Сидоров |
Результатом объединения отношений M и N будет отношение, представленное в таблице 3.4.
Таблица 3.4 - Объединение отношений M и N
ИД_Сотр | Фамилия | Зарплата |
Андреев | ||
Поляков | ||
Сидоров | ||
Андреев | ||
Танеев |
Примечание: как видно из данного примера, первичные ключи, которые были в отношениях M и N не наследуются объединением этих отношений. Поэтому, в объединении отношений M и N атрибут "ИД_Сотр" может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию операции объединения как "объединение множеств". Конечно, объединение отношений M и N имеет, как и любое отношение, первичный ключ, например, состоящий из всех атрибутов.
Пересечениемдвух совместимых по типу отношений M и N называется отношение с тем же заголовком, что и у отношений M и N, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям M и N.
Синтаксис операции пересечения: M INTERSECT N
Пример 3. Для тех же отношений M и N (таблицы 3.2 и 3.3) результатом пересечения будет отношение, представленное в таблице 3.5.
Таблица 3.5. Пересечение отношений M и N
ИД_Сотр | Фамилия | Зарплата |
Андреев | ||
Сидоров |
Примечание: как видно и в этом случае потенциальные ключи в результирующем отношении не наследуются. В целом, надо отметить, что ни одни реляционный оператор не передает в результат данных о ключах. Смысл этого заключается в том, что первичный ключ это понятие, которое позволяет различать один объект от другого. В тоже время, любой реляционный оператор есть операция над отношениями, переданными ему в качестве параметров. А понятие отношения есть множество, в котором отсутствуют механизмы, позволяющие отличать один элемент от другого.
Вычитаниемдвух совместимых по типу отношений M и N называется отношение с тем же заголовком, что и у отношений M и N, и телом, состоящим из кортежей, принадлежащих отношению M и не принадлежащих отношению N.
Синтаксис операции вычитания: M MINUS N
Пример 4. Для отношений M и N, что и в предыдущем примере (таблицы 3.2 и 3.3) вычитание имеет вид, представленный в таблице 3.6.
Таблица 3.6 - Вычитание отношений M и N
ИД_Сотр | Фамилия | Зарплата |
2 | Поляков |
Декартовым произведением двух отношений M(M1, M2,…Mn) и N(N1, N2,…Nm) называется отношение, заголовок которого является сцеплением заголовков отношений M и N: (M1, M2,…Mn, N1, N2,…Nm), а тело состоит из кортежей, являющихся сцеплением кортежей отношений M и N: (m1, m2, …mn, n1, n2,…nm), таких, что (m1, m2, …mn)ÎM, (n1, n2,…nm)ÎN.
Синтаксис операции декартового произведения: M TIMES N
Примечания:
мощность произведения M TIMES N равна произведению мощностей отношений M и N, т.к. каждый кортеж отношения M соединяется с каждым кортежем отношения N;
если в отношения M и N имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать;
перемножать можно любые два отношения, совместимость по типу при этом не требуется.
Пример 5. Пусть даны два отношения A и B с информацией о сотрудниках и о существующих должностях (таблицы 3.7 и 3.8).
Таблица 3.7 - Отношение A (Сотрудники) Таблица 3.8 - Отношение B (Должности)
ИД_Сотр | Фамилия | Стаж | ИД_Д | Должность | Зарплата | |
1 | Иванов | 1 | Профессор | |||
2 | Поляков | 2 | Доцент | |||
3 | Сидоров | 3 | Ассистент |
Декартово произведение отношений A и B будет иметь вид, представленный в таблице 3.9
Таблица 3.9 - Результат декартового произведения отношений A и B
ИД_Сотр | Фамилия | Стаж | Ид_Д | Должность | Зарплата |
Иванов | Профессор | ||||
Иванов | Доцент | ||||
Иванов | Ассистент | ||||
Поляков | Профессор | ||||
Поляков | Доцент | ||||
Поляков | Ассистент | ||||
Сидоров | Профессор | ||||
Сидоров | Доцент | ||||
Сидоров | Ассистент |
Примечание: в чистом виде декартово произведение не используется, так как оно не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако декартово произведение используется при выполнении различных специальных реляционных операций, в которых оно используется.