Анотація: Розглядаються спеціальні операції над відносинами: вибірка, проекція, декартовій твір, з'єднання. Наводяться різні типи з'єднань: з'єднання по еквівалентності, природне, зовнішнє з'єднання, напівз'єднання. Операції над відносинами ілюструються на прикладах оператора SELECT. Розглядаються приклади вибору даних з декількох таблиць. Наводиться об'єднання результатів декількох запитів.
Розглянемо основні операції над відносинами, які можуть представляти інтерес з точки зору отримання даних з реляційних таблиць. Це об'єднання, перетин, різниця, розширене декартовій твір відносин, а також спеціальні операції над відносинами: вибірка, проекція і з'єднання.
Для ілюстрації теоретико-множинних операцій над відносинами введемо абстрактні відносини (таблиці) з деякими атрибутами (полями).
Ставлення R R.a1 R.a2 A 1 A 2 B 1 B 3 B 4 CREATE TABLE R (a1 CHAR (1), a2 INT, PRIMARY KEY (a1, a2)) Ставлення S S.b1 S.b2 1 h 2 g 3 h CREATE TABLE S (b1 INT PRIMARY KEY, b2 CHAR (1))
Операції вибірки і проекції є унарними, оскільки вони працюють з одним ставленням.
операція вибірки
Операція вибірки - побудова горизонтального підмножини, тобто підмножини кортежів, що володіють заданими властивостями.
Операція вибірки працює з одним відношенням R і визначає результуюче відношення, яке містить тільки ті кортежі (рядки) відносини R, які задовольняють заданій умові F (предикату).
або .
Приклад 5.1. Операція вибірки в SQL.
вибірка записується в такий спосіб:
SELECT a1, a2 FROM R WHERE a2 = 1 5.1. Операція вибірки в SQL.
операція проекції
Операція проекції - побудова вертикального підмножини відносини, тобто підмножини кортежів, одержуваного вибором одних і винятком інших атрибутів.
Операція проекції працює з одним відношенням R і визначає нове відношення, яке містить вертикальне підмножина відносини R, створюване за допомогою вилучення значень зазначених атрибутів і виключення з результату рядків-дублікатів.
Приклад 5.2. Операція проекції в SQL.
проекція записується в такий спосіб:
SELECT DISTINCT b2 FROM S 5.2. Операція проекції в SQL.
До основних операцій над відносинами відноситься декартовій твір.
декартово твір
Декартово твір RxS двох відносин (двох таблиць) визначає нове відношення - результат конкатенації (тобто зчеплення) кожного кортежу (кожного запису) з відносини R з кожним кортежем (кожним записом) з відносини S.
RxS = {(a, 1, 1, h), (a, 2, 1, h), (b, 1, 1, h), ...} SELECT R.a1, R.a2, S.b1, S.b2 FROM R, S 5.3. Декартово твір відносин в SQL.
Результат декартова твори двох відносин показаний в таблиці.
Таблиця 5.1. R x S R.a1 R.a2 S.b1 S.b2 a 1 + 1 ha 1 2 ga 1 3 ha 2 1 ha 2 + 2 ga 2 3 hb 1 + 1 hb 1 2 gb 1 3 hb 3 1 hb 3 2 gb 3 3 hb 4 1 hb 4 2 gb 4 3 h
Якщо одне відношення має N записів і K полів, а інше M записів і L полів, то ставлення з їх декартових твором буде містити NxM записів і K + L полів. Вихідні відносини можуть містити поля з однаковими іменами, тоді імена полів будуть містити назви таблиць у вигляді префіксів для забезпечення унікальності імен полів щодо, отриманому як результат виконання декартова твори.
Однак в такому вигляді ( приклад 5.3. ) Відношення містить більше інформації, ніж зазвичай необхідно користувачу. Як правило, користувачів цікавить лише деяка частина всіх комбінацій записів в декартовом творі, яка задовольнить деякому умові. Тому замість декартова твори зазвичай використовується одна з найважливіших операцій реляційної алгебри - операція з'єднання, яка є похідною від операції декартового добутку. З точки зору ефективності реалізації в СУБД ця операція - одна з найважчих і часто входить в число основних причин, що викликають властиві всім реляційних систем проблеми з продуктивністю.