Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 3 Реляційні БД.doc
Скачиваний:
23
Добавлен:
19.11.2019
Размер:
2.52 Mб
Скачать

Різниця

R – S

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

Приклад 3.5 Операція різниці

Створіть список усіх міст, у яких є відділення компанії, але немає об'єктів нерухомості, що здаються в оренду.

П City (Branch) - П City (Property_for_Rent)

У даному випадку аналогічно попередньому прикладу варто створити спільні по об'єднанню відношенні Branch і Property_for_Rent, виконавши їх проекцію по атрибуті City. Потім для комбінування отриманих нових відношень варто використовувати операцію різниці. Результат виконання цих операцій показаний у табл. 3.14.

Операції з'єднання

Як правило, користувачів цікавить лише деяка частина всіх комбінацій кортежів декартового добутку, що задовольняє заданій умові. Тому замість декартового добутку звичайно використовується, одна з найважливіших операцій реляційної алгебри - операція з'єднання. У результаті її виконання на базі двох вихідних відношень створюється деяке нове відношення. Операція з'єднання є похідної від операції декартового добутку, тому що вона еквівалентна операції вибірки з декартового добутку двох операндів-відношень тих кортежів, що задовольняють умові, зазначеній в предикаті з'єднання як формули вибірки. З погляду ефективної реалізації в реляційних СКБД, ця операція є однієї із самих важких і часто виявляється однієї з основних причин, що викликають проблеми з продуктивністю, властиві всім реляційним системам.

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

  • Тета-з'єднання (Θ-join). .

  • З'єднання по еквівалентності (equi-join), що є приватним видом тета-з'єднання.

  • Природне з'єднання (natural join).

  • Зовнішнє з'єднання (outer join).

  • Напівз'єднання (semi-join).

Тета-з'єднання (θ - join)

R S

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

Позначення тета-з'єднання можна переписати на основі базових операцій вибірки і декартового добутку так, як показано нижче.

R S = σF (R x S)

Так само, як і у випадку з декартовим добутком, ступенем тета-з'єднання називається сума ступенів операндів-відношень R і S. Якщо предикат F містить тільки оператор рівності (=), то з'єднання називається з'єднанням по еквівалентності (equi-join). Ще раз звернемося до запиту, описаному в прикладі 3.3.

Приклад 3.6 Операція з'єднання по еквівалентності

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

У прикладі 3.3 для одержання цього списку використовувалися операції декартового добутки і вибірки. Однак той же самий результат можна одержати за допомогою з'єднання по еквівалентності.

( П Rno, Fname, Lname (Renter)) renter.rno = viewing.rnoRno, Pno, Comment (Viewing))

Результат цих операцій показаний у табл. 3.12.

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