Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бд.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.92 Mб
Скачать

Операція поділу відношень

Ця операція найменш очевидна з усіх операцій реляційної алгебри і тому потребує більш докладного пояснення. Нехай задані два відношення - A з заголовком {a1, a2, ..., an, b1, b2, ..., bm} і B з заголовком {b1, b2, ..., bm}. Будемо вважати, що атрибут bi відношення A і атрибут bi відношення B не тільки мають одну і ту саму назву, але і визначені на одному і тому ж домені. Назвемо множину атрибутів {ai} складовим атрибутом a, а множину атрибутів {bj} - складовим атрибутом b. Після цього будемо говорити про реляційний поділ бінарного відношення A(a, b) на унарне відношення B(b). Результатом поділу A на B є унарне відношення C(a), що складається з кортежів v таких, що відносно A є кортежі <v, w> такі, що множина значень {w} включає множину значень атрибуту b відносно B:

A DIVIDEBY B = С

Припустимо, що в базі даних деканату підтримуються два відношення: ВИКЛАДАЧІ (ВИКЛАДАЧ_ПІБ, НАЗВА_ПРЕДМЕТУ) та ПРЕДМЕТИ (НАЗВА_ПРЕДМЕТУ), причому унарне відношення ПРЕДМЕТИ містить усі предмети, які є у ВНЗі, де працюють викладачі. Тоді після виконання операції реляційного ділення відношення ВИКЛАДАЧІ на відношення ПРЕДМЕТИ буде отримано унарне відношення, що містить викладачів, які ведуть всі можливі в цій організації предмети.

31. Реляційне числення на кортежах.

6.4. Реляційне числення на кортежах

Припустимо, що ми працюємо з базою даних, яка задається схемою СПІВРОБІТНИКИ (СПІВРОБІТНИК_НОМЕР, СПІВРОБІТНИК_ПІБ, СПІВРОБІТНИК_ЗАРПЛАТНЯ, ВІДДІЛ_НОМЕР) і ВІДДІЛИ (ВІДДІЛ_НОМЕР, ВІДДІЛ_КІЛЬКІСТЬ, ВІДДІЛ_НАЧАЛЬНИК), і хочемо дізнатися імена і номери співробітників, які є начальниками відділів з кількістю співробітників більше 50.

Якби для формулювання такого запиту використовувалася реляційна алгебра, то ми отримали б алгебраїчний вираз, який читався б, наприклад, наступним чином:

  1. Виконати з'єднання відношень СПІВРОБІТНИКИ і ВІДДІЛИ за умовою СПІВРОБІТНИК_НОМЕР = ВІДДІЛ_НАЧАЛЬНИК.

  2. Обмежити отримане відношення за умовою ВІДДІЛ_КІЛЬКІСТЬ > 50.

  3. Спроектувати результат попередньої операції на атрибут СПІВРОБІТНИК_ПІБ, СПІВРОБІТНИК_НОМЕР.

Ми чітко сформулювали послідовність кроків виконання запиту, кожен з яких відповідає одній реляційній операції. Якщо ж сформулювати той самий запит з використанням реляційного числення, якому присвячується цей розділ, то ми б отримали формулу, яку можна було б прочитати, наприклад, наступним чином: Видати СПІВРОБІТНИК_ПІБ та СПІВРОБІТНИК_НОМЕР для співробітників таких, що існує відділ з таким самим значенням ВІДДІЛ_НАЧАЛЬНИК і значенням ВІДДІЛ_КІЛЬКІСТЬ більше за 50.

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