Реляционная алгебра в СУБД с примерами.

⚡ Умное резюме

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

  • 🔍 Начнём с унарных операторов: Функции SELECT, PROJECT и RENAME позволяют фильтровать строки, выбирать столбцы и переименовывать атрибуты в рамках одной связи.
  • 📚 Примените теорию множеств: Объединение, пересечение, различие и декартово произведение объединяют совместимые с объединением отношения в новые результаты.
  • 🔗 Присоединяйтесь целенаправленно: Объединения Theta, Equi и Natural обрабатывают внутренние совпадения, в то время как объединения Left, Right и Full Outer сохраняют несовпадающие кортежи с нулевыми значениями.
  • 📐 Совместимость с часами: Перед выполнением любых операций над множествами или объединениями всегда проверяйте соответствие количества элементов, имен атрибутов и доменов.
  • 🤖 Используйте ИИ для перевода: Искусственный интеллект-помощники преобразуют алгебраические выражения в 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 Google Активных
2 Amazon Активных
3 Apple Неактивный
4 Алибаба Активных

Проецирование на имя клиента и статус:

π CustomerName, Status (Customers)
Имя Клиента Статус
Google Активных
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.

Часто задаваемые вопросы (FAQ)

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

Два отношения совместимы по объединению, если они имеют одинаковое количество атрибутов, и каждый соответствующий атрибут имеет одинаковую область определения. Для отношений UNION, INTERSECTION и DIFFERENCE требуется совместимость по объединению.

Декартово произведение умножает каждую строку матрицы A на каждую строку матрицы B, создавая огромные промежуточные отношения, имеющие мало смысла. Обычно за ним следует предикат SELECT, чтобы получить полезное соединение.

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

Оператор DIVISION отвечает на запросы типа «для всех» — например, находит клиентов, которые заказали все товары из каталога. Он возвращает кортежи одного отношения, которые соответствуют каждому кортежу другого.

Используйте внешнее соединение, когда несовпадающие строки все еще имеют значение — например, для перечисления всех клиентов вместе с необязательными данными о заказе. Внутренние соединения удаляют эти несовпадающие строки; внешние соединения сохраняют их, используя значения NULL.

Искусственный интеллект-ассистенты переводят алгебраические выражения в SQL и обратно, пошагово объясняют приоритет операторов и отмечают отсутствующие предикаты объединения, которые в противном случае превратили бы запрос в медленное декартово произведение.

Да. Инструменты искусственного интеллекта преобразуют простые вопросы, такие как «покупатели из Индии, которые приобрели все товары», в алгебраические деревья с операторами SELECT, PROJECT и DIVISION, а затем конвертируют их в исполняемый SQL-код.

Подведем итог этой публикации следующим образом: