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

В математике декартово произведение (или для краткости произведение) двух мно­жеств является множеством всех таких упорядоченных пар элементов, что первый элемент в каждой паре берется из первого множества, а второй элемент в каждой па­ре берется из второго множества. Следовательно, декартово произведение двух от­ношений должно быть множеством упорядоченных пар кортежей. Но опять-таки не­обходимо сохранить свойство замкнутости; иначе говоря, результат должен содер­жать кортежи, а не упорядоченные пары кортежей. Поэтому версия декартова произведения в реляционной алгебре представляет собой расширенную форму опера­ции, в которой каждая упорядоченная пара кортежей заменяется одним кортежем, образованным из двух сцепленных кортежей этой пары. "Сцепление" здесь означает объединение (в смысле теории множеств, а не реляционной алгебры); т.е. кортежи

{ <А1:а1>, <А2:а2>,..., <Аm:am> }

и

{ <В1:b1>, <В2:Ь2>,..., <Вn:Ьn> }

(имена атрибутов показаны для определенности) сцепляются в один кортеж

{ <A1:al>, <A2:a2>,..., <Am:am>, <В1:b1>, <В2:Ь2>,..., <Вn:Ьn> }

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

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

Пример. Пусть отношения А и В будут такими, как показано на рис. 6.4 (отношение А представляет, например, номера всех текущих поставщиков, а отноше­ние В — номера всех текущих деталей). Тогда a times в— это все текущие пары по­ставщик-деталь и деталь-поставщик.

Прежде чем завершить обсуждение этой операции, необходимо указать, что на практике явное использование операции декартова произведения требуется только для чересчур сложных запросов (см. упражнения и ответы на них в конце главы). Другими словами, для реального запроса относительно редко требуется (хотя нельзя сказать что вовсе не требуется) использование операции декартова произведения. Эта операция включена в реляционную алгебру главным образом по концептуальным соображениям. В частности, как отмечается ниже в этой главе, декартово произведение требуется как промежуточный шаг при определении операции θ -соединения (а операция θ-соединения используется довольно часто).

S #   P#   .. ..   .. ..   .. ..   .. ..
S1 S1 S1 S1 S1 S1   P1 P2 P3 P4 P5 P6   S2 S2 S2 S2 S2 S2 P1 P2 P3 P4 P5 P6   S3 S3 S3 S3 S3 S3 P1 P2 P3 P4 P5 P6   S4 S4 S4 S4 S4 S4 P1 P2 P3 P4 P5 P6   S5 S5 S5 S5 S5 S5 P1 P2 P3 P4 P5 P6
..   ..   .. ..   .. ..   .. ..      
         
A S# B P#  
  S1 S2 S3 S4 S5   P1 P2 P3 P4 P5 P6  
         
Декартово произведение (A TIMES B)
  S#   P#   ...        
  S1 S1 S1 S1 S1 S1   P1 P2 P3 P4 P5 P6   S2 S2 S2 S2 S2 S2 P1 P2 P3 P4 P5 P6   S3 S3 S3 S3 S3 S3 P1 P2 P3 P4 P5 P6   S4 S4 S4 S4 S4 S4 P1 P2 P3 P4 P5 P6   S5 S5 S5 S5 S5 S5 P1 P2 P3 P4 P5 P6  
                 
                                 
                                         

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

Отметим, что операция декартова произведения не очень важна на практике, потому что после ее выполнения в результате нет никакой дополнительной информации по сравнению с исходной. В случае, показанном в примере на рис. 6.4, результат не говорит нам ничего нового – он просто подтверждает, что существуют номера поставщиков и номера деталей.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: