Соединение
Соединение выполняется для связывания данных между двумя таблицами. Исходные таблицы R1, R2 имеют разные структуры, в которых есть одинаковые атрибуты - внешние ключи. Операция соединения формирует новую таблицу, структура которой представляет собой совокупность всех атрибутов исходных таблиц. У операции соединения есть несколько версий: естественное соединение, тета-соединение и эквисоединение.
Естественное соединение. Операция соединения -
операция, связывающая таблицы, когда общие столбцы имеют равные значения. Общее определение естественного соединения таково: предположим, что мы хотим взять естественное соединение двух таблиц А и В, которые имеют общие строки С1,…,С
. Тогда операция выполняется за следующих три шага:1. Берется произведение таблиц А и В. В результате получается таблица, содержащая по два столбца на каждый С1,…,С
.2. Из таблицы произведения исключаются все строки, кроме тех, в которых значения столбцов С1,…,С
из таблицы А равны значениям этих столбцов в В.3. Проектированием исключается одна копия столбцов С1,…,С
.Если таблица А имеет k столбцов, а таблица В имеет m столбцов, то естественное соединение таблиц А и В будет состоять из (k+m-n) столбцов, где n - число общих столбцов таблиц А и В.
Пример. Рассмотрим таблицу А «Продажа» (табл.4.13) и таблицу В «Клиент» (табл.4.14). Предположим, мы хотим знать список клиентов, закупивших товар 2518. Результатом этого запроса будет таблица С «Отношение АJB» (табл.4.15).
Таблица 4.13. А «Продажа»
День | № клента | №
торгового агента | №
товара | Количество | |||||
28.02 | 100 | 10 | 2241 | 200 | |||||
19.02 | 101 | 23 | 2518 | 300 | |||||
12.02 | 105 | 10 | 2241 | 160 | |||||
22.02 | 100 | 39 | 2518 | 30 | |||||
14.02 | 101 | 23 | 2234 | 60 | |||||
15.02 | 110 | 37 | 2518 | 250 |
Таблица 4.14. В «Клиент»
№ клиента |
Имя клиента |
Город |
100 |
Смирнов |
Москва |
101 |
Петров |
Самара |
105 |
Кошкин |
Томск |
110 |
Воробьев |
Кемерово |
Имя клиента |
Смирнов |
Петров |
Воробьев |
Пример. Рассмотрим таблицу «Торговый агент» (табл.4.16). Предположим, что мы должны идентифицировать агентов, чьи менеджеры получают комиссионные более 11%. Результатом этого запроса будет таблица «Менеджер» (табл.4.17).
Таблица 4.16. «Торговый агент»
№ агента |
Фамилия |
№ менеджера |
Офис |
Комис. % |
10 |
Петров |
27 |
Москва |
10 |
14 |
Сидоров |
44 |
Киев |
11 |
23 |
Смирнов |
35 |
Токио |
9 |
37 |
Иванов |
12 |
Томск |
13 |
27 |
Васильева |
Москва |
15 |
|
39 |
Пряников |
44 |
Киев |
10 |
35 |
Манжурин |
27 |
Токио |
11 |
12 |
Сорокин |
27 |
Томск |
10 |
44 |
Кошкин |
27 |
Киев |
12 |
№ менеджера |
Петров |
Сидоров |
Пряников |
Кошкин |
Манжурин |
Сорокин |