- •1 Операція вибірки
- •2 Операція проекції
- •3 Декартовий добуток
- •4 Операція з'єднання по двох відношеннях (таблицям)
- •4.1 Операція тета-з'єднання
- •4.2 Природне з'єднання
- •4.3 Ліве зовнішнє з'єднання
- •4.4 Напівз'єднання
- •5 Операція об'єднання
- •6 Операція перетину
- •7 Операція різниці
- •8 Операція ділення відношень
6. Лекція
ТЕМА: З'єднання і теоретико-множинні операції над відношеннями:
МЕТА: Розглянути спеціальні операції над відношеннями: вибірка, проекція, декартовий добуток, з'єднання. Навести різні типи з'єднань: з'єднання по еквівалентності, природне, зовнішнє з'єднання, напівз'єднання. Операції над відношеннями проілюструвати на прикладах оператора SELECT. Розглянути приклади вибору даних з декількох таблиць. Привести об'єднання результатів декількох запитів.
ПЛАН
1 Операція вибірки
2 Операція проекції
3 Декартовий добуток
4 Операція з'єднання по двох відношеннях (таблицям)
4.1 Операція тета-з'єднання
4.2 Природне з'єднання
4.3 Ліве і праве зовнішнє з'єднання
4.4 Напівз'єднання
5 Операція об'єднання
6 Операція перетину
7 Операція різниці
8 Операція ділення відношень
Розглянемо основні операції над відношеннями, які можуть представляти інтерес з погляду вибірки даних з реляційних таблиць. Це об'єднання, перетин, різниця, розширений декартовий добуток відношень, а також спеціальні операції над відношеннями: вибірка, проекція і з'єднання.
Для ілюстрації теоретико-множинних операцій над відношеннями введемо абстрактні відношення (таблиці) з деякими атрибутами (полями).
Відношення R
R.a1 R.a2
А 1
А 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))
Операції вибірки і проекції є унарними, оскільки вони працюють з одним відношенням.
1 Операція вибірки
Операція вибірки - побудова горизонтальної підмножини, тобто підмножини кортежів, що володіють заданими властивостями.
Операція вибірки працює з одним відношенням R і визначає результуюче відношення, яке містить тільки ті кортежі (рядки) відношення R, які задовольняють заданій умові F (предикату).
або
Приклад 6.1. Операція вибірки в SQL.
Вибірка записується таким чином:
SELECT a1, a2
FROM R
WHERE a2=1
Приклад 6.1. Операція вибірки в SQL.
2 Операція проекції
Операція проекції - побудова вертикальної підмножини відношення, тобто підмножини кортежів, одержуваної вибором одних і виключенням інших атрибутів.
Операція проекції працює з одним відношенням R і визначає нове відношення, яке містить вертикальну підмножину відношення R, створювану за допомогою витягання значень вказаних атрибутів і виключення з результату рядків-дублікатів.
Приклад 6.2. Операція проекції в SQL.
Проекціяя записується таким чином:
SELECT DISTINCT b2
FROM S
Приклад 6.2. Операція проекції в SQL.
До основних операцій над відношеннями відноситься декартовий добуток.
3 Декартовий добуток
Декартовий добуток RxS двох відношень (двох таблиць) визначає нове відношення - результат конкатенації (тобто зчеплення) кожного кортежу (кожного запису) з відношення R з кожним кортежем (кожним записом) з відношення S .
RxS={(а, 1, 1, h), (а, 2, 1, h) (b, 1, 1, h) ... }
SELECT R.a1, R.a2, S.b1, S.b2
FROM R, S
Приклад 6.3. Декартовий добуток відношень в SQL.
Результат декартова добутка двох відношень показаний в таблиці.
Таблиця 6.1. R x S
R.a1 R.a2 S.b1 S.b2
а 1 1 h
а 1 2 g
а 1 3 h
а 2 1 h
а 2 2 g
а 2 3 h
b 1 1 h
b 1 2 g
b 1 3 h
b 3 1 h
b 3 2 g
b 3 3 h
b 4 1 h
b 4 2 g
b 4 3 h
Якщо одне відношення має N записів і К полів, а інше M записів і L полів, то відношення з їх декартовим добутком міститиме NxM записів і K+L полів. Початкові відношення можуть містити поля з однаковими іменами, тоді імена полів міститимуть назви таблиць у вигляді префіксів для забезпечення унікальності імен полів у відношенні, одержаному як результат виконання декартова добутка.
Проте у такому вигляді (приклад 6.3.) відношення містить більше інформації, ніж звичайно необхідно користувачу. Як правило, користувачів цікавить лише деяка частина всіх комбінацій записів в декартовому добутку, що задовольняє деякій умові. Тому замість декартова добутку звичайно використовується одна з найважливіших операцій реляційної алгебри - операція з'єднання, яка є похідною від операції декартова добутку. З погляду ефективності реалізації в реляційних СУБД ця операція - одна з найважчих і часто входить до числа основних причин, що викликають властиві всім реляційним системам проблеми з продуктивністю.
4 Операція з'єднання по двох відношеннях (таблицям)
З'єднання - це процес, коли дві або більш таблиці об'єднуються в одну. Здатність об'єднувати інформацію з декількох таблиць або запитів у вигляді одного логічного набору даних обумовлює широкі можливості SQL.
В мові SQL для завдання типу з'єднання таблиць в логічний набір записів, з якого вибиратиметься необхідна інформація, використовується операція JOIN в пропозиції FROM.
Формат операції:
FROM ім’я_таблиці_1 {INNER | LEFT | RIGHT} JOIN ім’я_таблиці_2
ON умова_з’єднання
Існують різні типи операцій з'єднання:
тета-з'єднання ;
з'єднання по еквівалентності ;
природне з'єднання ;
зовнішнє з'єднання , ;
напівз'єднання .