- •1. Маніпулювання реляційними даними
- •2. Основи реляційної алгебри
- •2.1. Основна концепція реляційної алгебри
- •2.2. Загальна інтерпретація реляційних операцій. Операції над кортежами і відношеннями
- •2.4. Основні операції реляційної алгебри з обробки відношень
- •2.5. Особливості теоретико-множинних операцій реляційної алгебри (сумісність, перейменування). Теоретико-множинні оператори
- •2.6. Спеціальні реляційні операції: операція взяття вибірки, проекції, операції об’єднання та ділення відношень
- •3. Основи реляційного числення
2. Основи реляційної алгебри
Прагнення до мінімізації кількості таблиць для збереження даних може призвести до виникнення різних проблем при їхньому відновленні і будуть дані рекомендації з розбивки деяких великих таблиць на кілька маленьких. Але як сформувати необхідну відповідь, якщо потрібні для нього дані зберігаються в різних таблицях?
Запропонувавши реляційну модель даних, Е.Ф.Кодд створив і інструмент для зручної роботи з відношеннями – реляційну алгебру. Кожна операція цієї алгебри використовує одну чи кілька таблиць (відношень) у якості її операндів і продукує у результаті нову таблицю, тобто дозволяє "розрізати" чи "склеювати" таблиці
Третя частина реляційної моделі, маніпуляційна частина, стверджує, що доступ до реляційним даних здійснюється за допомогою реляційної алгебри чи еквівалентного їй реляційного числення.
У реалізаціях конкретних реляційних СУБД зараз не використовується в чистому вигляді ні реляційна алгебра, ні реляційне числення. Фактичним стандартом доступу до реляційних даних стала мова SQL (Structured Query Language). Мова SQL являє собою суміш операторів реляційної алгебри і виразів реляційного числення, що використовує синтаксис, близький до фраз англійської мови і розширений додатковими можливостями, відсутніми в реляційній алгебрі і реляційному численні. Узагалі, мова доступу до даних називаєтьсяреляційно повною, якщо вона за виразною силою не поступається реляційній алгебрі (чи, що те ж саме, реляційному численню), тобто будь-який оператор реляційної алгебри може бути виражений засобами цієї мови. Саме такою і є мова SQL.
2.1. Основна концепція реляційної алгебри
Основна ідея реляційної алгебри полягає в тому, що якщо відношення є множинами, то засоби маніпулювання відношеннями можуть базуватися на традиційних теоретико-множинних операціях, доповнених деякими спеціальними операціями, специфічними для баз даних.
Існує багато підходів до визначення реляційної алгебри, що розрізняються набором операцій і способами їхньої інтерпретації, але в принципі, більш-менш рівносильні. Ми опишемо трохи розширений початковий варіант алгебри, що був запропонований Коддом. У цьому варіанті набір основних алгебраїчних операцій складається з восьми операцій, що поділяються на два класи - теоретико-множинні операції і спеціальні реляційні операції. До складу теоретико-множинних операцій входять операції:
об'єднання відношень;
перетинання відношень;
узяття різниці відношень;
прямого добутку відношень.
Спеціальні реляційні операції включають:
вибірку відношення;
проекцію відношення;
з'єднання відношень;
ділення відношень.
Крім того, до складу алгебри включається операція присвоювання, що дозволяє зберегти в базі дані результати обчислення алгебраїчних виразів, і операція перейменуванняатрибутів, що дає можливість коректно сформувати заголовок (схему) результуючого відношення.
2.2. Загальна інтерпретація реляційних операцій. Операції над кортежами і відношеннями
Майже всі операції запропонованого вище набору мають очевидну і простуінтерпретацією.
При виконанні операції об'єднання двох відношень створюється відношення, що включає всі кортежі, що входять хоча б в одне з відношень-операндів.
Операція перетинання двох відношень створює відношення, що включає всі кортежі, що входять в обидва відношення-операнди.
Відношення, що є різницею двох відношень включає всі кортежі, що входять у відношення - перший операнд, такі, що жоден з них не входить у відношення, що є другим операндом.
При виконанні прямого добутку двох відношень утворюється відношення, кортежі якого є конкатенацією (зчепленням) кортежів першого і другого операндів.
Результатом обмеження (вибірки) відношення за деякою умовою є відношення, що включає кортежі відношення-операнду, що задовольняє цій умові.
При виконанні проекції відношення на заданий набір його атрибутів створюється відношення, кортежі якого утворюються шляхом узяття відповідних значень з кортежів відношення-операнду.
При з'єднанні двох відносин по деякій умові утвориться результуюче відношення, кортежі якого є конкатенацією кортежів першого і другого відношень і задовольняють цій умові.
В операції реляційного ділення два операнди - бінарне й унарне відношення. Результуюче відношення складається з одноатрибутних кортежів, що включають значення першого атрибута кортежів першого операнду таких, що множина значень другого атрибута (при фіксованому значенні першого атрибута) збігається з множиною значень другого операнду.
Операція перейменування створює відношення, тіло якого збігається з тілом операнду, але імена атрибутів змінені.
Операція присвоювання дозволяє зберегти результат обчислення реляційного виразу в існуючому відношенні БД.
Оскільки результатом будь-який реляційної операції (крім операції присвоювання) є деяке відношення, можна утворювати реляційні вирази, у яких замість отношения-операнда деякої реляційної операції знаходиться вкладений реляційний вираз.
Операції обробки кортежів.
Ці операції зв'язані зі зміною складу кортежів у якому-небудь відношенні.
ДОДАТИ - необхідно задати ім'я відносини і ключ кортежу.
ВИДАЛИТИ - необхідно вказати ім'я відносини, а також ідентифікувати чи кортеж групу кортежів, що підлягають видаленню.
ЗМІНИТИ - виконується для названого відношення і може коректувати як один, так і кілька кортежів.
2.3. Замкнутість реляційної алгебри та операції перейменування
Реляційна алгебра являє собою набір операторів, що використовує відношення як аргументи, і відношення, що повертають, як результат. Таким чином, реляційний оператор виглядає як функція з відношеннями як аргументи: R = f(R1,R2, …, Rn)...
Реляційна алгебра є замкнутою, тому що як аргументи в реляційні оператори можна підставляти інші реляційні оператори, що підходять за типом:
R = f(f1(R11,R12, …, R1n),f2(R21,R21, …, R2m), …)...
Таким чином, у реляційних виразах можна використовувати вкладені вирази як завгодно складної структури.
Кожне відношення має мати унікальне ім'я в межах бази даних. Ім'я відношення, отриманого в результаті виконання реляційної операції, визначається в лівій частині рівності. Однак можна не вимагати наявності імен від відношень, отриманих у результаті реляційних виразів, якщо ці відносини підставляються як аргументи в інші реляційні вирази. Такі відношення будемо називати неіменованими відношеннями. Неіменовані відношення реально не існують у базі даних, а тільки обчислюються в момент обчислення значення реляційного оператора.
Традиційно визначають вісім реляційних операторів, об'єднаних у дві групи.
Теоретико-множинні оператори:
Об'єднання
Перетин
Різниця
Декартів добуток
Спеціальні реляційні оператори:
Вибірка
Проекція
З'єднання
· Ділення
