Базы данных

Операторы соединения и декартова приведения


До этого не рассматривались операторы, создающие отношения с большим числом атрибутов, чем исходное отношение. Однако в результате объединения атрибутов из двух различных отношений будет получаться новое отношение, содержащее больше атрибутов, чем каждое из исходных отношений. Например, можно объединить отношения Employee и TimeCard, чтобы получить новое отношение, имеющее все атрибуты работников и все атрибуты карточек учета рабочего времени.

Простейший оператор умножения — это декартово произведение (Cartesian product). В результате кортежами нового отношения являются всевозможные сочетания одного кортежа левого операнда с одним кортежем правого. В примере с отношениями Employee и TimeCard для каждого работника в декартовом произведении будет содержаться столько кортежей, сколько кортежей было в отношении TimeCard. Эта операция записывается следующим образом:

Employee х TimeCard

В результате этой операции получится 30 кортежей, поскольку имелось 5 работников и 6 карточек учета рабочего времени. Каждый кортеж содержит 9 атрибутов, 3 из Employee и 6 из TimeCard. В 6.5 приведены несколько строк из этого отношения. Имена апри- бутов следует изменить, чтобы создать новую схему. Если такие изменения не произвести, то схема будет содержать два атрибута с именами ssn. В 6.5 показано использование составных имен для этих двух атрибутов. Employee.ssn — это атрибут ssn из таблицы Employee, a TimeCard, ssn — ssn из таблицы TimeCard.

Таблица 6.5. Частичный результат декартовою произведения отношений Employee и TimeCard приведены не все строки)

 last first   start end store

Employee.ssn Name Name TimeCard.ssn date Time Time Id paid

145-09-0967 Uno Jane 145-09-0967 01/14/99 8:15 12:00 3 no

245-11-4554 Toulouse Jie 245-11-4554 01/14/99 8:15 12:00 3 no

145-09-0967 Uno Jane 376-77-0099 02/23/99 14:00 22:00 5 no

245-11-4554 Toulouse Jie 145-09-0967 01/14/99 8:15 12:00 3 no

Комментарии закрыты