Реляционная алгебра в СУБД с примерами.
⚡ Умное резюме
Реляционная алгебра в СУБД — это процедурный язык запросов, который принимает отношения в качестве входных данных и выдает новые отношения в качестве выходных данных. Он группирует операторы в унарные, множественные и бинарные категории, обеспечивая теоретическую основу, которую SQL-движки преобразуют в исполняемые планы запросов.
Что такое реляционная алгебра?
Реляционная алгебра SQL — это процедурный язык запросов, который принимает на вход экземпляры отношений и возвращает на выход новые экземпляры отношений. Он рекурсивно применяет фиксированный набор операторов к одному или нескольким отношениям, и результатом каждого оператора само является отношение, которое может быть передано в следующую операцию. SQL-движки используют эту алгебру для планирования и выполнения запросов.
Основы реляционной алгебры Operaных
Операторы реляционной алгебры делятся на три группы.
Унарный реляционный Operaных
- ВЫБРАТЬ (σ)
- ПРОЕКТ (π)
- ПЕРЕИМЕНОВАТЬ (ρ)
Operaидеи из теории множеств
- СОЮЗ (∪)
- ПЕРЕСЕЧЕНИЕ (∩)
- РАЗНИЦА (−)
- ДЕКАРТОВСКОЕ ПРОИЗВЕДЕНИЕ (×)
Двоичный реляционный Operaных
- РЕГИСТРАЦИЯ
- ОТДЕЛ
В разделах ниже подробно рассматривается каждый оператор с примерами решения.
ВЫБРАТЬ (σ)
ВЫБОР Операция выбирает подмножество кортежей, удовлетворяющих заданному предикату. Символ сигма σ обозначает это:
σ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 | Активных | |
| 2 | Amazon | Активных |
| 3 | Apple | Неактивный |
| 4 | Алибаба | Активных |
Проецирование на имя клиента и статус:
π CustomerName, Status (Customers)
| Имя Клиента | Статус |
|---|---|
| Активных | |
| Amazon | Активных |
| Apple | Неактивный |
| Алибаба | Активных |
Переименовать (ρ)
переименовать Оператор — это унарная операция, которая присваивает новое имя атрибуту (или всему отношению). Например, ρ(a/b) R переименовывает атрибут b отношения R в aФункция переименования особенно полезна, когда необходимо выполнить самосоединение или соединение двух отношений, имеющих общие имена атрибутов.
Союз 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 должны быть совместимы по объединению.
- Названия атрибутов и домены должны совпадать.
Пример: 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 присоединиться — это декартово произведение, за которым следует предикат выбора. Объединения обозначаются символом . ⋈ символ и позволяет осмысленно объединять связанные кортежи из разных отношений.
Типы соединений:
- Внутренние соединения: Тета-соединение, Экви-соединение, Естественное соединение.
- Внешние соединения: Левая, правая и полная внешняя соединения.
Внутреннее соединение
В одном из внутреннее соединениеВключаются только кортежи, удовлетворяющие критериям соответствия; остальные отбрасываются.
Тета Присоединяйтесь
Общая форма оператора JOIN выглядит следующим образом: Тета присоединиться, обозначается θ. В критериях отбора Theta 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 |
Equi join — один из наиболее часто используемых стилей соединения, и RDBMS Как правило, оптимизатор запросов прилагает значительные усилия для повышения их эффективности.
Естественное соединение (⋈)
A Естественное соединение Требуется наличие общего атрибута (столбца) между отношениями. Общий атрибут должен иметь то же имя и домен. Результат содержит одну копию соответствующего столбца.
Рассмотрим эти две таблицы.
| Таблица С | |
|---|---|
| В | Площадь |
| 2 | 4 |
| 3 | 9 |
| Таблица D | |
|---|---|
| В | Cubo,en |
| 2 | 8 |
| 3 | 27 |
C ⋈ D производит:
| В | Площадь | Cubo,en |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Внешнее соединение
An внешнее соединение хранит кортежи, удовлетворяющие критериям соответствия. и Кортежи, которые не соответствуют условиям, заполняют отсутствующие столбцы значением NULL.
Левое внешнее соединение (A ⟕ B)
Левое внешнее соединение сохраняет все кортежи в левом отношении. Если строка в A не имеет соответствующей строки в B, атрибуты, предоставленные B, заполняются значением NULL.
Рассмотрим следующие таблицы:
| Таблица A | |
|---|---|
| В | Площадь |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Таблица B | |
|---|---|
| В | Cubo,en |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B дает:
| В | Площадь | Cubo,en |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL, |
Правое внешнее соединение (A ⟖ B)
Правое внешнее соединение (right outer join) сохраняет каждое кортежное представление в правильном соотношении. Если строка в B не имеет соответствующей строки в A, столбцы, содержащие данные из A, заполняются значением NULL.
A ⟖ B дает:
| В | Cubo,en | Площадь |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL, |
Полное внешнее соединение (A ⟗ B)
Полное внешнее соединение сохраняет все кортежи из обоих отношений, независимо от того, совпало ли условие соединения. Отсутствующие значения с любой стороны становятся NULL.
A ⟗ B дает:
| В | Площадь | Cubo,en |
|---|---|---|
| 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. |




