Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой_проект_УД_.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
735 Кб
Скачать
☆

18. Соединение отношений. Оператор join

Соединение отношений R1 и R2:

обозначается символом « », под которым на месте нижнего индекса записывают условие соединения, в котором  — арифметический оператор сравнения (<,=,>,,,); k—арность отношения R1; i и j—номера столбцов соответственно в отношениях R1 и R2.

Если  является арифметическим оператором равенства, то операцию называют эквисоединением.

Пример 18.1. Рассмотрим пример соединения отношений с поименованными столбцами R11(А,В,С) и R12(D,Е). Вычислим эквисоединение при условии, что элементы столбцов В и D равны.

Отношения R11(А,В,С) и R12(D,Е) представлены в таблицах 18.1 и 18. 2.

Таблица 18.1 - R11(А,В,С)

Таблица 18.2. - R12(D,Е)

A

B

C

D

Е

а

б

с

а

и

а

и

р

е

к

д

е

ж

Промежуточное действие – вычисление декартова произведения: R11*R12 . Результат представим в таблице 18.3.

Таблица 18.3 - R11*R12

А

В

С

D

Е

а

б

с

а

и

а

и

р

а

и

д

е

ж

а

и

а

б

с

е

к

а

и

р

е

к

д

е

ж

е

к

Следующее действие – селекция строк при условии, что элементы столбцов В и D равны. Результат содержит одну строку, представленную в таблице 18.4.

Таблица 18.4 – R13

A

B

C

Д

Е

д

е

ж

е

к

Естественное соединение отношений R1 и R2. Эта операция применяется только тогда, когда в отношениях R1 и R2 имеются одинаковые столбцы. Естественное соединение - это комбинация двух отношений по общим атрибутам. Условие реализации R1 ∩ R2 ≠ Ø.

Пусть отношения R1 и R2 имеют соответственно схемы

где имена A1,A2,...,Ak у обоих отношений совпадают, а остальные различаются (для упрощения совпадающие имена размещены в начале, но они, конечно, могут быть записаны в любом другом порядке). Естественное соединение равно:

R1.A1—имя столбца отношения R1×R2, соответствующего столбцу А1 в отношении R1; R2.A2 — имя столбца отношения R1×R2, соответствующего столбцу А1 в отношении R2. Запись «имя_таблицы.имя_атрибута», например, R1.A1 называется «уточненное имя атрибута».

Пример 18.2. Получим естественное соединение отношений ВЕДОМОСТЬ_1(Фамилия, алгебра) и ВЕДОМОСТЬ_2(Фамилия, геометрия). Отношения представлены в таблицах 18.5 и 18.6. В этих отношениях имеется один совпадающий столбец. Условие естественного соединения – в одноименных столбцах атрибуты должны принимать совпадающие значения.

Таблица 18.5 -ВЕДОМОСТЬ_1

Таблица 18.6 - ВЕДОМОСТЬ_2

Фамилия

алгебра

Фамилия

геометрия

Иванов

отлично

Иванов

хорошо

Петров

хорошо

Петров

отлично

Получим декартово произведение отношений ВЕДОМОСТЬ_1 и ВЕДОМОСТЬ_2. Результат представим в таблице 18.7.

Таблица 18. 7 – отношение ВЕДОМОСТЬ_1 * ВЕДОМОСТЬ_2

Фамилия

алгебра

Фамилия

геометрия

Иванов

отлично

Иванов

хорошо

Петров

хорошо

Иванов

хорошо

Иванов

отлично

Петров

отлично

Петров

хорошо

Петров

отлично

Следующий шаг – селекция. Выбираем строки, удовлетворяющие условию: ВЕДОМОСТЬ_1.фамилия= ВЕДОМОСТЬ_2.фамилия. Получим таблицу 18. 8.

Таблица 18. 8 – Результат селекции

ВЕДОМОСТЬ_1.фамилия= ВЕДОМОСТЬ_2.фамилия (ВЕДОМОСТЬ_1 * ВЕДОМОСТЬ_2)

Фамилия

алгебра

Фамилия

геометрия

Иванов

отлично

Иванов

хорошо

Петров

хорошо

Петров

отлично

Для получения окончательного результата в таблице 18.8 нужно устранить избыточность. Для этого выполним проекцию на все разные столбцы. Результат – в таблице 18. 9.

Таблица 18.9 – результат вычисления естественного соединения отношений ВЕДОМОСТЬ_1 и ВЕДОМОСТЬ_2

Фамилия

алгебра

геометрия

Иванов

отлично

хорошо

Петров

хорошо

отлично

Для реализации соединения в языке SQL используется оператор JOIN. В СУБД Visual FoxPro также используется оператор JOIN. Для получения естественного соединения в Visual FoxPro используется оператор INNER JOIN.

Пример 18.3. Рассмотрим базу данных, содержащую две таблицы, представленные на рисунке 18.1. Таблица Table1 представляет собой ведомость по алгебре – Table1(Name, Algebra) и таблица Table.2 представляет собой ведомость БД – Table2(Name,Database). Условие применения естественного соединения выполняется, так как у таблиц имеется общий столбец – Name. Естественное соединение таблиц можно получить разными способами, показанными на рисунке 18.1. В командном окне представлены два различных запроса, выполнение которых дает одинаковый результат, представленный в окне Query. Один из запросов содержит оператор INNER JOIN:

Select Table1.name, Table1.Algebra, Table2.Database FROM Table1, Table2 WHERE Table1.name= Table2.name

Другой запрос:

Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 INNER JOIN Table2 ON Table1.name= Table2.name

Рисунок 18.1 – Получение естественного соединения

Естественное соединение, полученное в результате выполнения любого из приведенных запросов, показано в окне Query на рисунке 18.1.

Пример 18.4. Левое соединение включает все строки левой таблицы (по отношению к оператору LEFT JOIN) и только те строки из правой таблицы, которые удовлетворяют условию соединения (Table1.name= Table2.name).

Запрос для получения левого соединения:

Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 LEFT JOIN Table2 ON Table1.name= Table2.name

Результат выполнения этого запроса представлен на рисунке 18.2. В рассмотренном примере в правой таблице Table2 нет строчки, где поле Table2.name = «Кузнецов В.В.», поэтому в результате выполнения запроса появляется неопределенное значение NULL.

Рисунок 18.2 – Получение левого соединения

Пример18.5. Правое соединение включает все строки правой таблицы (по отношению к оператору RIGHT JOIN) и только те строки из левой таблицы, которые удовлетворяют условию соединения (Table1.name=Table2.name). Запрос для получения правого соединения

Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 RIGHT JOIN Table2 ON Table1.name= Table2.name

Результат выполнения этого запроса представлен на рисунке 18.3.

Рисунок 18.2 – Получение правого соединения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]