Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 6БД.doc
Скачиваний:
52
Добавлен:
30.05.2020
Размер:
1.24 Mб
Скачать

4.1 Операція тета-з'єднання

Операція тета-з'єднання визначає відношення, яке містить кортежі з декартова добутку відношень R і S, що задовольняють предикату F. Предикат F має вигляд, де може бути вказаний один з операторів порівняння ( >, >= <, <= =, < > ).

Якщо предикат F містить тільки оператор рівності ( = ), то з'єднання називається з'єднанням по еквівалентності.

Таблиця 6.2.

R.a1 R.a2 S.b1 S.b2

а 1 1 h

а 2 2 g

b 3 3 h

b 1 1 h

Операція тета-з'єднання в мові SQL називається INNER JOIN (внутрішнє з'єднання ) і використовується, коли потрібно включити всі рядки з обох таблиць, що задовольняють умові об'єднання. Внутрішнє з'єднання має місце і тоді, коли в пропозиції WHERE порівнюються значення полів з різних таблиць. В цьому випадку будується декартовий добуток рядків першої і другої таблиць, а з одержаного набору даних відбираються записи, що задовольняють умовам об'єднання.

В умовах об'єднання можуть брати участь поля, що відносяться до одного і того ж типу даних і що містять один і той же вид даних, але вони не обов'язково повинні мати однакові імена.

Блоки даних з двох таблиць об'єднуються, як тільки у вказаних полях будуть знайдені співпадаючі значення.

Якщо в пропозиції FROM перераховано декілька таблиць і при цьому не вживається специфікація JOIN, а для вказівки відповідності полів з таблиць використовується умова в пропозиції WHERE, то деякі реляційні СУБД (наприклад, Access) оптимізують виконання запиту, інтерпретуючи його як з'єднання.

Якщо перераховувати ряд таблиць або запитів і не указувати умови об'єднання, як початкова таблиця буде вибрано декартовий (прямий) добуток всіх таблиць.

SELECT R.a1, R.a2, S.b1, S.b2

FROM R, S

WHERE R.a2=S.b1

або

SELECT R.a1, R.a2, S.b1, S.b2

FROM R INNER JOIN S ON умова

Приклад 6.4. Тета-з'єднання відношень в SQL.

4.2 Природне з'єднання

Природним з'єднанням називається з'єднання по еквівалентності двох відношень R і S, виконане по всіх загальних атрибутах, з результатів якого виключається по одному екземпляру кожного загального атрибута.

Таблиця 6.3.

R.a1 R.a2 або S.b1 S.b2

а 1 h

а 2 g

b 3 h

b 1 h

SELECT R.a1, R.a2, S.b2

FROM R, S

WHERE R.a2=S.b1

або

SELECT R.a1, S.b1, S.b2

FROM R INNER JOIN S ON умова

Приклад 6.5. Природне з'єднання відношень в SQL.

Приклад 6.6. Вибрати інформацію про продані товари.

SELECT *

FROM Операція, Товар

WHERE Сделка.КодТовара=Товар.КодТовара

Або (що еквівалентне)

SELECT *

FROM Товар INNER JOIN Операція

ON Товар.КодТовара=Сделка.КодТовара

Приклад 6.6. Вибірка інформації про продані товари.

Можна створити вкладені об'єднання, додавши третю таблицю до результату об'єднання двох інших таблиць.

Приклад 6.7. Одержати відомості про товари, дату операцій, кількість проданого товару і покупців.

SELECT Товар.Назва, Операція.Кількість, Операція. Дата, Клієнт.Фірма

FROM Клієнт INNER JOIN (Товар INNER JOIN Операція ON Товар.КодТовара = Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента

Приклад 6.7. Вибірка відомостей про товари, дату операцій, кількість проданого товару і покупців.

Використовування загальних імен таблиць для ідентифікації стовпців незручно через їх громіздкість. Кожній таблиці можна привласнити яке-небудь коротке позначення, псевдонім.

Зовнішнє з'єднання схоже на внутрішнє, але в результуючий набір даних включаються також записи ведучої таблиці з'єднання, які об'єднуються з порожньою безліччю записів іншої таблиці.

Яка з таблиць буде ведучою, визначає вид з'єднання. LEFT - ліве зовнішнє з'єднання, ведучою є таблиця, розташована зліва від виду з'єднання; RIGHT - праве зовнішнє з'єднання, головна таблиця розташована праворуч від виду з'єднання.

Соседние файлы в папке лекции