Реляційна алгебра - Програмні продукти
Огляд реляційної алгебри
p align="justify"> Третя частина реляційної моделі, маніпуляційна частина, стверджує, що доступ до реляційних даних здійснюється за допомогою реляційної алгебри або еквівалентного йому реляційного обчислення.
У реалізаціях конкретних реляційних СУБД нині немає у чистому вигляді ні реляційна алгебра, ні реляційне обчислення. Фактичним стандартом доступу до реляційних даних стала мова SQL (Structured Query Language). Мова SQL являє собою суміш операторів реляційної алгебри та виразів реляційного обчислення, що використовує синтаксис, близький до фраз англійської мови та розширений додатковими можливостями, відсутніми в реляційній алгебрі та реляційному обчисленні. Взагалі, мова доступу до даних називаєтьсяреляційно повним, якщо він за виразною силою не поступається реляційній алгебрі (або, що те саме, реляційному обчисленню), тобто. Будь-який оператор реляційної алгебри може бути виражений засобами цієї мови. Саме такою є мова SQL.
У цьому розділі буде розглянуто основи реляційної алгебри.
Замкненість реляційної алгебри
Реляційна алгебра являє собою набір операторів, які використовують відносини як аргументи, і повертають відносини як результат. Таким чином, реляційний оператор виглядає як функція з відносинами як аргументи:
Реляційна алгебра є замкненою, т.к. як аргументи в реляційні оператори можна підставляти інші реляційні оператори, що підходять за типом:
Таким чином, в реляційних виразах можна використовувати вкладені вирази як завгодно складної структури.
Кожне ставлення має мати унікальне ім'я не більше бази даних. Ім'яВідношення, отриманого в результаті виконання реляційної операції, визначається у лівій частині рівності. Однак можна не вимагати наявності імен від відносин, отриманих в результаті реляційних виразів, якщо ці відносини підставляються як аргументи в інші реляційні вирази. Такі відносини називатимемонеіменованими відносинами. Неіменовані відносини реально немає у базі даних, лише обчислюються в останній момент обчислення значення реляційного оператора.
Традиційно, за Коддом, визначають вісім реляційних операторів, об'єднаних у дві групи.
- Об'єднання
- Перетин
- Віднімання
- Декартове твір
Спеціальні реляційні оператори:
- Вибірка
- Проекція
- З'єднання
- Поділ
Не всі є незалежними, тобто. деякі з цих операторів можуть бути виражені через інші реляційні оператори.
Відносини, сумісні за типом
Деякі реляційні оператори (наприклад об'єднання) вимагають, щоб відносини мали однакові заголовки. Справді, відносини складаються із заголовка та тіла. Операція об'єднання двох відносин є просто об'єднання двох множин кортежів, взятих із тіл відповідних відносин. Але чи буде результат ставленням? По-перше, якщо вихідні відносини мають різну кількість атрибутів, то, очевидно, що безліч, що є об'єднанням таких різнотипних кортежів, не можна уявити у вигляді відношення. По-друге, навіть відносини мають однакову кількість атрибутів, але атрибути мають різні назви. Як тоді визначити заголовок відносини, отриманого в результаті об'єднання множин кортежів? По-третє, нехай відносини мають однакову кількістьатрибутів, атрибути мають однакові назви, але визначені різних доменах. Тоді знову об'єднання кортежів не утворюватиме відношення.
Визначення 1 : Будемо називати відносинисумісними за типом, якщо вони мають ідентичні заголовки, а саме,
- Відносини мають те саме безліч імен атрибутів , тобто . для будь-якого атрибуту в одному відношенні знайдеться атрибут з таким самим найменуванням в іншому відношенні,
- Атрибути з однаковими іменами визначені на тих самих доменах .
Деякі відносини не сумісні за типом, але стають такими після деякого перейменування атрибутів. Щоб такі стосунки можна було використовувати в реляційних операторах, вводиться допоміжнийоператор перейменування атрибутів.
Оператор перейменування атрибутів
Оператор перейменування атрибутів має наступний синтаксис:
- Відношення, - вихідні імена атрибутів, - Нові імена атрибутів.
В результаті застосування оператора перейменування атрибутів отримуємо нове відношення зі зміненими іменами атрибутів.
Наступний оператор повертає неіменоване ставлення, в якому атрибут перейменований на :
Теоретико-множинні оператори
Об'єднання
Визначення 2 :Об'єднаннямдвох сумісних за типом відносин і називається відношення з тим же заголовком, що і у відносин і , і тілом, що складається з кортежів, що належать або , або , або обох відносин.
Синтаксис операції об'єднання:
Зауваження. Об'єднання, як будь-яке ставлення, неспроможна містити однакових кортежів. Тому, якщо деякий кортеж входить і у відношення, і ставлення, то об'єднання він входить один раз.
Приклад 2. Нехай дані два відносини і з інформацією про співробітників: