Реляційна алгебра в СУБД з прикладами

⚡ Розумний підсумок

Реляційна алгебра в СУБД — це процедурна мова запитів, яка приймає відношення на вхід і створює нові відношення на вихід. Вона групує оператори в унарні, множинні та бінарні категорії, забезпечуючи теоретичну основу, яку SQL-двигуни перетворюють на виконувані плани запитів.

  • 🔍 Почніть з унарних операторів: Команди SELECT, PROJECT та RENAME фільтрують рядки, вибирають стовпці та перейменовують атрибути в одному відношенні.
  • 📚 Застосуйте теорію множин: ОБ'ЄДНАННЯ, ПЕРЕТИН, РІЗНИЦЯ та ДЕКРАТОВИЙ ДОБІТОК поєднують сумісні з об'єднанням співвідношення в нові результати.
  • 🔗 Приєднуйтесь навмисно: Тета-, екві- та природні з'єднання обробляють внутрішні збіги, тоді як ліве, праве та повне зовнішнє з'єднання зберігають незрівнянні кортежі з нулями.
  • 📐 Сумісність годинника: Завжди перевіряйте вирівнювання арності, імен атрибутів та доменів перед будь-якою операцією множення або об'єднання.
  • 🤖 Використовуйте штучний інтелект для перекладу: Помічники на основі штучного інтелекту перетворюють алгебраїчні вирази в SQL, пояснюють пріоритет операторів та позначають відсутні умови з'єднання простою англійською мовою.

Реляційна алгебра в СУБД

Що таке реляційна алгебра?

Реляційна алгебра — це процедурна мова запитів, яка приймає екземпляри відношень на вхідні дані та повертає нові екземпляри відношень на вихідні дані. Вона рекурсивно застосовує фіксований набір операторів до одного або кількох відношень, і результат кожного оператора сам по собі є відношенням, яке можна використовувати в наступній операції. SQL-рушії спираються на цю алгебру для планування та виконання запитів.

Базова реляційна алгебра Operaвих

Оператори реляційної алгебри поділяються на три групи.

Унарний реляційний Operaвих

  • ВИБРАТИ (σ)
  • ПРОЄКТ (π)
  • ПЕРЕЙМЕНУВАТИ (ρ)

Operaз теорії множин

  • СОЮЗ (∪)
  • ПЕРЕТИН (∩)
  • РІЗНИЦЯ (−)
  • ДЕКАРТОВ ДОБУТОК (×)

Двійковий реляційний Operaвих

  • РЕЄСТРАЦІЯ
  • DIVISION

У розділах нижче детально описано кожен оператор з прикладами виконання.

ВИБРАТИ (σ)

Команда ВИБІР Операція вибирає підмножину кортежів, які задовольняють заданий предикат. Символ сигма σ позначає це:

σp(r)

де σ є оператором, p є умовою пропозиції, і r – це відношення (таблиця). SELECT зберігає схему та відкидає рядки, які не відповідають предикату.

Приклад 1

σ topic = "Database" (Tutorials)

Вибирає кортежі з Підручники де тема дорівнює «База даних».

Приклад 2

σ topic = "Database" AND author = "guru99" (Tutorials)

Вибирає кортежі з Підручники де тема — «База даних», а автор — guru99.

Приклад 3

σ sales > 50000 (Customers)

Вибирає кортежі з Клієнти вартість продажу яких перевищує 50 000.

Проекція (π)

Команда проекція Оператор видаляє всі атрибути з вхідного відношення, окрім перелічених, створюючи вертикальну підмножину. Проекція також усуває дублікати рядків, що виникають внаслідок видалення.ping атрибути. Символ пі π позначає це.

приклад: розгляньте наступну таблицю.

Ідентифікатор клієнта Ім'я клієнта Статус
1 Google Active
2 Amazon Active
3 Apple неактивний
4 Alibaba Active

Проектування на основі імені клієнта та статусу:

π CustomerName, Status (Customers)
Ім'я клієнта Статус
Google Active
Amazon Active
Apple неактивний
Alibaba Active

Перейменувати (ρ)

Команда перейменувати Оператор — це унарна операція, яка надає нове ім'я атрибуту (або всьому відношенню). Наприклад, ρ(a/b) R перейменовує атрибут b відношення R до aПерейменування особливо корисне, коли потрібно виконати самоз'єднання або об'єднання двох відношень, які мають спільні імена атрибутів.

Union Operaція (∪)

Команда СОЮЗ оператор, що позначається як , повертає кожен кортеж, що з'являється у відношенні A або B, автоматично видаляючи дублікати.

Result ← A ∪ B

Щоб союз був дійсним:

  • A та B повинні мати однакову кількість атрибутів (однакову арність).
  • Відповідні домени атрибутів мають бути сумісними.
  • Дублікати кортежів видаляються автоматично.

Приклад. Розглянемо ці дві таблиці:

Таблиця A Таблиця B
колонка 1 колонка 2 колонка 1 колонка 2
1 1 1 1
1 2 1 3

A ∪ B дає:

колонка 1 колонка 2
1 1
1 2
1 3

Різниця наборів (−)

Символ мінус позначає різниця наборів. Результат A − B — це відношення, що містить усі кортежі, що знаходяться в A, але не в B.

  • A та B мають бути сумісними за об'єднанням.
  • Імена атрибутів та домени повинні збігатися.

Приклад: А − В

колонка 1 колонка 2
1 2

Перетин (∩)

Команда перетин оператор, що позначається як , визначає відношення, що містить кожен кортеж, що зустрічається як в A, так і в B. A та B повинні бути сумісними за об'єднанням.

Візуальне визначення перетину

Візуальне визначення перетину.

Приклад: A ∩ B

колонка 1 колонка 2
1 1

Декартів добуток (×) у СУБД

Команда Декартовий продукт поєднує кожен кортеж одного відношення з кожним кортежем іншого, об'єднуючи їхні стовпці. Сам по собі результат рідко буває корисним, але в поєднанні з предикатом SELECT він стає основою JOIN. Його також називають векторним добутком або перехресним з'єднанням.

Приклад: σ стовпця 2 = '1' (A × B)

Вираз повертає кожен рядок A × B чий column 2 значення дорівнює 1.

колонка 1 колонка 2
1 1
1 1

Приєднатися Operaвих

A приєднатися — це декартів добуток, за яким йде предикат вибору. Об'єднання позначаються як символ і дозволяє вам змістовно поєднувати пов'язані кортежі з різних відношень.

Типи приєднання:

  • Внутрішні з'єднання: Тета-з'єднання, екві-з'єднання, природне з'єднання.
  • Зовнішні з'єднання: Ліві, праві та повні зовнішні з'єднання.

Внутрішнє з'єднання

У inner join, включаються лише ті кортежі, які відповідають критеріям відповідності; решта відкидаються.

Тета приєднатися

Загальна форма JOIN - це Тета-приєднання, що позначається θ. Тета-з'єднання може використовувати будь-яку умову порівняння у своїх критеріях вибору.

A ⋈θ B

Наприклад:

A ⋈ A.column 2 > B.column 2 (B)
колонка 1 колонка 2
1 2

Приєднатися до Equi

Коли тета-з'єднання використовує лише умови рівності, воно стає Рівноправне приєднання.

A ⋈ A.column 2 = B.column 2 (B)
колонка 1 колонка 2
1 1

Рівномірне з'єднання є одним з найбільш використовуваних стилів з'єднання, і СУБД Оптимізатор запитів зазвичай докладає значних зусиль для підвищення його ефективності.

Природне з'єднання (⋈)

A Природне приєднання потрібен спільний атрибут (стовпець) між відношеннями. Спільний атрибут повинен мати однакове ім'я та домен. Результат містить одну копію відповідного стовпця.

Розгляньте ці дві таблиці.

Таблиця С
В Площа
2 4
3 9
Таблиця D
В Куб
2 8
3 27

C ⋈ D виробляє:

В Площа Куб
2 4 8
3 9 27

Зовнішнє приєднання

An зовнішнє з'єднання зберігає кортежі, що відповідають критеріям відповідності та кортежі, які цього не роблять, заповнюючи відсутні стовпці значенням NULL.

Ліве зовнішнє з’єднання (A ⟕ B)

Ліве зовнішнє з'єднання зберігає кожен кортеж у лівому відношенні. Якщо рядок в A не має відповідного рядка в B, атрибути, надані B, заповнюються значенням NULL.

Зліва Зовнішнє приєднання

Розгляньте наступні таблиці:

Таблиця A
В Площа
2 4
3 9
4 16
Таблиця B
В Куб
2 8
3 18
5 75

A ⟕ B дає:

В Площа Куб
2 4 8
3 9 18
4 16 NULL

Праве зовнішнє з'єднання (A ⟖ B)

Праве зовнішнє з'єднання зберігає кожен кортеж у правильному відношенні. Якщо рядок у B не має відповідного рядка в A, стовпці, що надаються A, заповнюються значенням NULL.

Правильне зовнішнє приєднання

A ⟖ B дає:

В Куб Площа
2 8 4
3 18 9
5 75 NULL

Повне зовнішнє з'єднання (A ⟗ B)

Повне зовнішнє з'єднання зберігає кожен кортеж з обох відношень, незалежно від того, чи збіглася умова з'єднання. Відсутні значення з будь-якого боку стають NULL.

A ⟗ B дає:

В Площа Куб
2 4 8
3 9 18
4 16 NULL
5 NULL 75

OperaКороткий опис довідки Tor

Скористайтеся цією довідковою таблицею, щоб швидко згадати, що робить кожен оператор.

Operaція (Символ) Мета
ВИБРАТИ (σ) Вибирає підмножину кортежів, які задовольняють заданий предикат.
ПРОЄКТ (π) Зберігає лише перелічені атрибути та видаляє дублікати рядків.
СОЮЗ (∪) Повертає кожен кортеж, що зустрічається в A або B, без дублікатів.
ВСТАНОВИТИ РІЗНИЦЮ (−) Повертає кортежі з A, яких немає в B.
ПЕРЕТИН (∩) Повертає кортежі, що зустрічаються як в A, так і в B.
ДЕКАРТОВ ДОБУТОК (×) Поєднує кожен кортеж A з кожним кортежем B.
INNER JOIN Зберігає лише ті кортежі, які відповідають умові об'єднання.
ТЕТА-ОБ'ЄДНАННЯ (θ) З'єднання загальної форми з використанням будь-якого предиката порівняння.
EQUI JOIN Тета-з'єднання, яке використовує лише порівняння рівності.
ПРИРОДНЕ З'ЄДНАННЯ (⋈) Об'єднує відношення за атрибутами, що мають однакове ім'я та домен.
ЛІВЕ ЗОВНІШНЄ З'ЄДНАННЯ (⟕) Зберігає кожен кортеж з лівого відношення, заповнює правий рядок значенням NULL.
ПРАВИЙ ЗОВНІШНІЙ ОБ'ЄДНАННЯ (⟖) Зберігає кожен кортеж з правого відношення, заповнює лівий рядок значенням NULL.
ПОВНЕ ЗОВНІШНЄ З'ЄДНАННЯ (⟗) Зберігає кожен кортеж з обох відношень, заповнюючи пропущені значення значенням NULL.

Поширені запитання

Реляційна алгебра — це процедурна математична мова, що використовується для визначення операцій над відношеннями. SQL — це декларативна мова запитів, яку механізми баз даних внутрішньо перетворюють на плани виконання в алгебраичному стилі.

Два відношення є сумісними за допомогою об'єднання, коли вони мають однакову кількість атрибутів, і кожен відповідний атрибут має спільний домен. ОБ'ЄДНАННЯ, ПЕРЕТИН та РІЗНИЦЯ вимагають сумісності за допомогою об'єднання.

Декартів добуток множить кожен рядок A на кожен рядок B, створюючи величезні проміжні співвідношення, які мало що означають. Зазвичай за ним слідує предикат SELECT, щоб створити корисне з'єднання.

Ні. Чиста реляційна алгебра трактує відношення як множини, тому дублікати автоматично видаляються після кожної операції. SQL поводиться інакше — він працює з мультимножинами та видаляє дублікати лише тоді, коли використовується DISTINCT.

Оператор DIVISION відповідає на запити «для всіх» — наприклад, знайти клієнтів, які замовили кожен товар у каталозі. Він повертає кортежі одного відношення, які відповідають кожному кортежу іншого.

Використовуйте зовнішнє об'єднання, коли незбігаючі рядки все ще мають значення, наприклад, перераховуючи всіх клієнтів разом із необов'язковими даними замовлення. Внутрішні об'єднання видаляють ці незбігаючі рядки; зовнішні об'єднання зберігають їх із заповнювачами NULL.

Помічники штучного інтелекту перетворюють алгебраїчні вирази в SQL і назад, крок за кроком пояснюють пріоритет операторів і позначають відсутні предикати з'єднання, які в іншому випадку перетворили б запит на повільний декартів добуток.

Так. Інструменти штучного інтелекту перетворюють прості англійські питання, такі як «клієнти з Індії, які купили кожен продукт», на алгебраїчні дерева за допомогою операторів SELECT, PROJECT та DIVISION, а потім конвертують їх у виконуваний SQL.

Підсумуйте цей пост за допомогою: