Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции к урокам 2007.doc
Скачиваний:
90
Добавлен:
23.12.2018
Размер:
3.44 Mб
Скачать
  1. Соединение

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

  • общая операция соединения;

  • тэта-соединение;

  • экви-соединение;

  • естественное соединение.

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

1. Общая операция соединения.

Соединением отношений R1 и R2 по условию с называется отношение: (R1times R2) where c, где с представляет логическое выражение, в которое могут входить атрии буты отношений R1 и R2 и/или скалярные выражения.

Таким образом, операция соединения есть результат последовательного применения операций декартова произведения и выборки. Если в отношениях R1 и R2 имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.

2. Тэта-соединение.

Пусть отношение R1 содержит атрибут R11, то отношение R2 , содержит атрибут R12,  - один из операторов в сравнения {=, ≠, , , ≤, }. Тогда -соединение отношения R1 по атрибуту R11 с отношением R2 по атрибуту R21 называют отношение (R1 times R2) where R11 R21.

Это частный случай операции общего соединения. Нередко для операции -соединения применяют более короткий синтаксис: R1[R11  R21] R2.

Пример 7. Рассмотрим деятельность деканата, которому необходимо хранить данные о студентах и сдаваемых ими дисциплинах. Каждый студент обучается на определенном курсе. Каждая дисциплина читается в определенном семестре. таким образом, в деканате должны храниться сведения о сдаче студентами соответствующих экзаменов, семестр которых соответствует определенному курсу (например, при сдаче летней экзаменационной сессии закономерность будет такова: семестр=2*курс; при сдаче зимней : семестр = 2*курс-1).

Таблица 13. Отношение R1 Студенты

Личный номер

Фамилия студента

Курс

11

Котова

4

22

Серова

1

33

Леонидов

3

Таблица 14 Отношение R2 Дисциплины

Код дисциплины

Название дисциплины

Семестр

1

Высшая математика

2

2

Иностранный язык

3

3

Философия

1

4

Психология

9

5

Спецкурс

10

Результаты вопроса (запроса) «Какие экзамены сданы всеми студентами, которые закончили учебный год» т.е. R1[семестр ≤ 2*курс]R2

Таблица 15. Отношение «Какие экзамены сданы всеми студентами, которые закончили учебный год»

Личный номер

Фамилия студента

Курс

Код

дисциплины

Название

дисциплины

Семестр

11

Котова

4

1

Высшая

математика

2

11

Котова

4

2

Иностранный язык

3

11

Котова

4

3

Философия

1

22

Серов

1

1

Высшая

математика

1

22

Серов

3

3

Философия

2

33

Леонидов

1

1

Высшая

математика

2

33

Леонидов

2

2

Иностранный язык

3

33

Леонидов

3

3

Философия

1

2. Экви-соединение.

Наиболее важные частный случай -соединения – это когда  есть простое равенство. Синтаксис экви-соединения: : R1[R11 = R21] R2.

Пример 8. Пусть имеются отношения R1, R2 и R3, хранящие информацию о студентах, дисциплинах и оценках соответственно.

Таблица 16. Отношение R1(Студенты)

Личный номер

Фамилия студента

11

Котова

22

Серова

33

Леонидов

Таблица 17. R2(Дисциплины)

Код дисциплины

Название дисциплины

1

Высшая математика

2

Иностранный язык

3

Философия

Таблица 18. R3(Оценки)

Личный номер

Код дисциплины

Оценка

11

1

5

11

2

4

11

3

5

22

1

3

22

3

4

33

2

5

Если необходимо получить из данных отношений информацию, касающуюся всех оценок, полученных студентами, то нужно использовать экви-соединение: R1[личный-номер = личный-номер] R3.

Так как в отношениях имеются одинаковые атрибуты, то сначала необходимо переименовать атрибуты, а потом выполнить экви-соединение:

(R1 rename личный-номер as личный-номер_1) [личный_номер_1 = личный_номер_2]

(R3 rename личный_номер as личный_номер_2)

Но, как правило, такой сложной формой записи не пользуются. Итак, результатом такого экви-соединения является отношение

Таблица 19. Отношение («Какие оценки получены студентами»)

Личный номер

(1)

Фамилия

студента

Личный номер

(2)

Код

Дисциплины

Оценка

11

Котова

11

1

5

11

Котова

11

2

4

11

Котова

11

3

5

22

Серов

22

1

3

22

Серов

22

2

4

33

Леонидов

33

3

5

Замечание: Недостатком экви-соединения является то, что при соединении отношений с одинаковыми атрибутами в результирующем отношении появляются два атрибута с одинаковыми значениями. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.

3. Естественное соединение.

Пусть даны отношения R1(R11, R12,…,R1n, Z1, Z2,…,Zp) и R2(Z1, Z2,…,Zp R21, R22,…,R2m), имеющие, однако атрибуты Z1, Z2,…,Zp (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах). Тогда естественным соединением отношений R1 и R2 называется отношение с заголовком (R11, R12,…,R1n, Z1, Z2,…,Zp, R21, R22,…,R2m) и телом, содержащим множество кортежей (r11, r12,…,r1n, z1, z2,…,zp, r21, r22,…,r2m) таких, что (r11, r12,…,r1n, z1, z2,…,zp,) R1 и (z1, z2,…,zp, r21, r22,…,r2m) R2.

Для обозначения естественного соединения используется следующий синтаксис: R1 join R2

Замечание: Естественное соединение эквивалентно следующей последовательности реляционных операций:

  • переименовать одинаковые атрибуты в отношениях;

  • выполнить декартово произведение отношений;

  • выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена;

  • выполнить проекцию, удалив повторяющиеся атрибуты;

  • переименовать атрибуты, вернув им первоначальные имена.

Можно выполнять последовательное естественное соединение нескольких отношений. Легко заметить, что естественное соединение обладает свойством ассоциативности: (R1 join R2) join R3 = R1(R2 join R3), в силу чего такие соединения можно записывать в виде: R1 join R2 join R3

Пример 10. Для предыдущего примера ответ на вопрос «Какими студентами получены какие оценки?» можно записать в виде естественного соединения трех отношений R1 join R2 join R3

Таблица 20. Отношение R1 join R2 join R3

Личный номер

(1)

Фамилия

студента

Код

Дисциплины

Название

дисциплины

Оценка

11

Котова

1

Высшая

математика

5

11

Котова

2

Иностранный

язык

4

11

Котова

3

Философия

5

22

Серов

1

Высшая

математика

3

22

Серов

2

Философия

4

33

Леонидов

3

Иностранный

язык

5