Обробка запитів: операції реляційної алгебри
Розділ: Бази та сховища даних
📌 Про що ця тема
Реляційна алгебра — це формальна мова опису запитів до бази даних, у якій таблиці (відношення) обробляються операціями, а результатом кожної операції завжди є нова таблиця. На іспиті перевіряють, чи вмієш визначити, яка операція потрібна для заданого результату, і як вона змінює рядки/стовпці. Ключове поняття — відношення (таблиця) зі схемою (набором атрибутів) і кортежами (рядками).
📖 Головне
• Відношення — таблиця без дублікатів рядків; схема — назви й типи стовпців; кортеж — один рядок. Усі операції дають нову таблицю (принцип замкненості).
• Вибірка (селекція, σ) — залишає РЯДКИ, що задовольняють умову. Кількість стовпців не змінюється. Приклад: σ(вік>18)(Студенти).
• Проекція (π) — залишає задані СТОВПЦІ, решту відкидає; дублікати рядків автоматично видаляються. Приклад: π(Прізвище, Група)(Студенти).
• Об'єднання (∪) — усі рядки з двох таблиць разом, без повторів. Вимога: однакова схема (сумісність — однакова кількість і типи стовпців).
• Перетин (∩) — лише рядки, присутні в ОБОХ таблицях. Теж потрібна сумісність схем.
• Різниця (−) — рядки першої таблиці, яких НЕМАЄ в другій. R−S ≠ S−R (не комутативна).
• Декартів добуток (×) — кожен рядок першої таблиці зчіплюється з кожним рядком другої. Якщо R має m рядків, S має n, результат — m·n рядків, стовпці складаються.
• З'єднання (⋈, join) — комбінація добутку й вибірки: зчіплює рядки за умовою збігу атрибутів. Природне з'єднання об'єднує за однойменними стовпцями.
• Операції комбінують: запит = послідовність операцій над проміжними таблицями.
🔢 Як це працює на прикладі
Таблиця Студенти: (Іван, Г1, 20), (Олег, Г2, 17), (Марія, Г1, 19).
Завдання: вивести прізвища повнолітніх з групи Г1.
Крок 1 — вибірка рядків за умовою: σ(вік≥18 І Група='Г1'). Залишаються (Іван, Г1, 20) і (Марія, Г1, 19).
Крок 2 — проекція потрібного стовпця: π(Прізвище). Результат: Іван, Марія.
Приклад різниці: Відмінники − Боржники дасть студентів, які відмінники, але НЕ боржники. Поміняєш місцями — отримаєш зовсім інший результат.
⚠️ Типові помилки
• Плутають вибірку і проекцію: вибірка (σ) ріже по рядках за умовою, проекція (π) — по стовпцях. Це найчастіша втрата балів.
• Забувають, що проекція прибирає дублікати рядків автоматично — у результаті їх менше, ніж очікують.
• Вважають різницю комутативною: R−S та S−R дають різні таблиці.
• Намагаються об'єднати (∪) чи перетнути (∩) таблиці з різними схемами — ці операції вимагають сумісності.
• Плутають декартів добуток (усі з усіма, m·n рядків) із з'єднанням (лише рядки, що відповідають умові).
🎯 Що завчити напам'ять
• σ — рядки за умовою; π — стовпці.
• ∪, ∩, − потребують однакової схеми; − не комутативна.
• Декартів добуток: m·n рядків, стовпці складаються.
• З'єднання = добуток + вибірка за умовою збігу.
• Результат будь-якої операції — завжди таблиця без дублікатів.
🧠 Перевір себе
1. Яка операція залишає лише деякі СТОВПЦІ таблиці?
2. Чи можна об'єднати (∪) таблиці з різною кількістю стовпців?
3. Скільки рядків дасть декартів добуток таблиць на 4 і 5 рядків?
4. Чим з'єднання відрізняється від декартового добутку?
Відповіді: 1 — проекція (π); 2 — ні, потрібна сумісність схем; 3 — 20 рядків (4·5); 4 — з'єднання залишає лише рядки, що відповідають умові збігу, а добуток зчіплює всі з усіма.