Произведение

Вычитание

Пересечение

Как и для оператора объединения, для реляционного оператора пересечения (и по тем же причинам) необходимо, чтобы его операнды были совместимы по типу. Итак, пересечением двух совместимых по типу отношений А и В (что записывается как A INTERSECT В) называется отношение того же типа с телом, состоящим из множества всех кортежей t, которые принадлежат одновременно обоим исходным отношениям А и В.

Пример. Пусть вновь отношения А и В будут такими, как показано на рис.2. Тогда выражение A INTERSECT В (см. рис. 2, б) представляет поставщиков, которые находятся в Лондоне и поставляют деталь под номером 'Р1'.

Как и для операторов объединения и пересечения, для реляционного оператора вычитания необходимо, чтобы его операнды были совместимы по типу. Тогда вычитанием двух совместимых по типу отношений А и В (что записывается как A MINUS В, причем порядок их указания здесь играет роль) называется отношение того же типа, что и отношения А и В с телом, состоящим из множества всех кортежей t, которые принадлежат отношению А, но не принадлежат отношению В.

Пример. Пусть еще раз отношения А и В будут такими, как показано на рис. 2. Тогда выражение A MINUS В (см. рис. 2, в) представляет поставщиков, которые находятся в Лондоне и не поставляют деталь под номером 'Р1', а выражение В MINUS А (см. рис. 2, г) представляет поставщиков, которые поставляют деталь под номером 'Р1' и не находятся в Лондоне. Заметьте, что при вычитании учитывается порядок следования операндов, точно так, как в обычной арифметике (например, 5-2 и 2-5 — это не одно и то же).

В математике декартово произведение (или для краткости — просто произведение) двух множеств является множеством всех таких упорядоченных пар элементов, что первый элемент в каждой паре берется из первого множества, а второй элемент в каждой паре берется из второго множества. Следовательно, декартово произведение двух отношений должно быть множеством упорядоченных пар кортежей. Но, опять-таки, необходимо сохранить свойство замкнутости; иначе говоря, результат должен содержать кортежи, а не упорядоченные пары кортежей. Поэтому версия декартова произведения в реляционной алгебре представляет собой расширенную форму операции, в которой каждая упорядоченная пара кортежей заменяется одним кортежем, образованным из двух сцепленных кортежей этой пары. "Сцепление" здесь означает объединение (в смысле теории множеств, а не реляционной алгебры), т.е. кортежи { А1:а1, А2:а2,..., Am:am }и{ В1:b, В2:b2,..., Bn:bn } объединяются в один кортеж. { А1:а1, А2:а2,..., Аm:аm, В1:b1, В2:b2,..., Bn:bn }.

Другая проблема, возникающая в связи с декартовым произведением, заключается в том, что результирующее отношение должно иметь правильно сформированный заголовок. Очевидно, что заголовок результирующего отношения должен содержать все атрибуты из двух исходных отношений. Однако, если эти два заголовка имеют какие-то общие имена атрибутов, возникает проблема. Если допустить подобную операцию, то результирующий заголовок будет иметь два одинаковых атрибута, а значит, будет "неверно сформированным". Поэтому, чтобы построить декартово произведение двух отношений, которые имеют какие-то общие имена атрибутов, необходимо прежде применить оператор RENAME для переименования соответствующих атрибутов.

В результате можно определить (реляционное) декартово произведение двух отношений А и В (что записывается как A TIMES В), где отношения А и В не имеют общих имен атрибутов, как новое отношение с заголовком, представляющим собой объединение заголовков двух исходных отношений А и В, и с телом, состоящим из множества всех кортежей t. таких, что каждый кортеж t представляет собой объединение двух кортежей, один из которых принадлежит отношению А, а другой — отношению В. Кардинальность результата равняется произведению кардинальностей исходных отношений А и В, а степень равняется сумме их степеней.

Пример. Пусть отношения А и В будут такими, как показано на рис. 3 (отношение А представляет, например, номера всех существующих на данный момент поставщиков, а отношение В — номера всех поставляемых на текущий момент деталей). Тогда произведение A TIMES В — это набор всех возможных на текущий момент пар из значений номера поставщика и номера детали.

Рис. 7. Пример операции декартова произведения.

Специальные реляционные операции*