Предполагается, что реляционные системы баз данных будут оснащены языком запросов, который поможет пользователям запрашивать экземпляры базы данных. Существует два вида языков запросов — реляционная алгебра и реляционное исчисление.
Реляционная алгебра
Реляционная алгебра — это процедурный язык запросов, который принимает экземпляры отношений в качестве входных данных и выдает экземпляры отношений в качестве выходных. Он использует операторы для выполнения запросов. Оператор может быть как унарным, так и двоичным . Они принимают отношения как свой вклад и дают отношения как свой выход. Реляционная алгебра выполняется рекурсивно в отношении, и промежуточные результаты также считаются отношениями.
Основные операции реляционной алгебры следующие:
- Выбрать
- проект
- союз
- Установить разные
- Декартово произведение
- переименовывать
Мы обсудим все эти операции в следующих разделах.
Выберите операцию (σ)
Он выбирает кортежи, которые удовлетворяют данному предикату из отношения.
Обозначение — σ p (r)
Где σ обозначает предикат выбора, а r обозначает отношение. p — логическая формула предложения, которая может использовать соединители, такие как и, или, и нет . В этих терминах могут использоваться реляционные операторы, такие как — =, ≠, ≥, <,>, ≤.
Например —
σ subject = "database" (Books)
Вывод — выбирает кортежи из книг, предметом которых является «база данных».
σ subject = "database" and price = "450" (Books)
Вывод — выбирает кортежи из книг, где предметом является «база данных», а «цена» — 450.
σ subject = "database" and price = "450" or year > "2010" (Books)
Выходные данные — выбирает кортежи из книг, где предметом является «база данных», а «цена» составляет 450, или тех книг, которые были опубликованы после 2010 года.
Операция проекта (∏)
Он проецирует столбцы, которые удовлетворяют данному предикату.
Обозначения — ∏ A 1 , A 2 , A n (r)
Где A 1 , A 2 , A n являются именами атрибутов отношения r .
Дублирующиеся строки автоматически удаляются, так как отношение является множеством.
Например —
∏ subject, author (Books)
Выбирает и проецирует столбцы, названные как субъект и автор из книги отношений.
Союз Операция (∪)
Он выполняет двоичное соединение между двумя данными отношениями и определяется как —
r ∪ s = { t | t ∈ r or t ∈ s}
Обозначения — r U s
Где r и s — это либо отношения базы данных, либо набор результатов отношений (временное отношение).
Чтобы операция объединения была действительной, должны выполняться следующие условия:
- r и s должны иметь одинаковое количество атрибутов.
- Домены атрибутов должны быть совместимы.
- Дублирующиеся кортежи автоматически удаляются.
∏ author (Books) ∪ ∏ author (Articles)
Вывод — проецирует имена авторов, написавших книгу, статью или обоих.
Установить разницу (-)
Результатом операции установки разности являются кортежи, которые присутствуют в одном отношении, но не во втором.
Обозначения — r — s
Находит все кортежи, которые присутствуют в r, но не в s .
∏ author (Books) − ∏ author (Articles)
Вывод — содержит имена авторов, которые написали книги, но не статьи.
Декартово произведение (Χ)
Объединяет информацию двух разных отношений в одно.
Обозначение — r Χ s
Где r и s — отношения, и их выходные данные будут определены как —
r Χ s = {qt | q ∈ r и t ∈ s}
σ author = 'tutorialspoint' (Books Χ Articles)
Выходные данные — возвращает отношение, которое показывает все книги и статьи, написанные tutorialspoint.
Переименовать операцию (ρ)
Результаты реляционной алгебры также являются отношениями, но без какого-либо имени. Операция переименования позволяет нам переименовать выходное отношение. Операция переименования обозначается маленькой греческой буквой rho .
Обозначение — ρ x (E)
Где результат выражения E сохраняется с именем x .
Дополнительные операции —
- Установить пересечение
- присваивание
- Естественное соединение
Реляционное исчисление
В отличие от реляционной алгебры, реляционное исчисление — это непроцедурный язык запросов, то есть он говорит, что делать, но никогда не объясняет, как это сделать.
Реляционное исчисление существует в двух формах —
Реляционное исчисление кортежей (TRC)
Фильтрация диапазонов переменных по кортежам
Обозначение — {T | Состояние}
Возвращает все кортежи T, которые удовлетворяют условию.
Например —
{ T.name | Author(T) AND T.article = 'database' }
Выходные данные — возвращает кортежи с именем name от автора, который написал статью о «базе данных».
TRC может быть определена количественно. Мы можем использовать Existential (∃) и Universal Quantifiers (∀).
Например —
{ R| ∃T ∈ Authors(T.article='database' AND R.name=T.name)}
Вывод. Приведенный выше запрос даст тот же результат, что и предыдущий.
Доменное реляционное исчисление (DRC)
В DRC фильтрующая переменная использует область атрибутов вместо целых значений кортежа (как сделано в TRC, упомянутом выше).
Запись —
{a 1 , a 2 , a 3 , …, a n | P (a 1 , a 2 , a 3 , …, a n )}
Где a1, a2 — атрибуты, а P — формулы, построенные из внутренних атрибутов.
Например —
{< article, page, subject > |∈ TutorialsPoint ∧ subject = 'database'}
Выходные данные — возвращает статью, страницу и тему из отношения TutorialsPoint, где тема — это база данных.
Как и TRC, DRC также может быть записан с использованием экзистенциальных и универсальных квантификаторов. В DRC также участвуют реляционные операторы.
Выражение силы Tuple Relation Calculus и Domain Relation Calculus эквивалентно реляционной алгебре.