Операции над отношениями
Операции, которые могут выполняться над отношениями, разделяют на две группы.
К первой группе относятся операции, которые выполняются над множествами. К ним относится объединение, пересечение, разность, деление и декартово произведение.
Ко второй группе относятся специальные операции над отношениями. К таким операциям, в частности, относят следующие операции: проекция, соединение, выбор.
В разных системах управления базами данных реализуется лишь некоторая часть операций над отношениями, которая определяет в какой-то мере возможности данной системы управления БД и сложность реализации запросов к базе данных.
В реляционных СУБД при выполнении операций над отношениями используют две группы языков, которые имеют свою математическую основу в виде теоретических языков запросов, предложенных Э.Коддом:
- реляционную алгебру;
- реляционное исчисление.
Названные языки предоставляют минимальные возможности реальных языков работы с данными соответственно реляционной модели и являются эквивалентными один одному своими выразительными возможностями. Выделяют простые правила преобразования запросов между ними.
Операнды и результаты всех действий в реляционной алгебре являются отношениями.
Т.к. отношение, которое является результатом запроса к реляционной базе данных, может вычисляться при выполнении последовательности реляционных операторов, которые применяются к отношениям, языки реляционной алгебры являются процедурными.
Операторы состоят из реляционных операций и операндов. В роли операндов выступают отношения. Отношение является результатом реляционной операции.
В отличие от реляционной алгебры, языки исчислений являются непроцедурными (декларативными, или описательными) и позволяют конструировать запросы при помощи предиката первого порядка (высказывание в виде функции). Домены отношений или кортежи должны удовлетворять этому предикату.
В запросе к базе данных, который выполнен при использовании подобного языка, содержится только информация о желаемом результате. Эти языки характеризуются наличием набора правил для записи запросов. К языкам этой группы, в частности, относится язык SQL.
Теоретические языки запросов
Рассмотрим языки реляционной алгебры и реляционных исчислений на примере базы данных, которая включает такие таблицы:
- P (поставщик);
- D (деталь);
- PD (поставка).
Первичные ключи этих таблиц соответственно: Поставщик# (код поставщика), Деталь# (код детали) и составной ключ (Поставщик#, Деталь#).
На рисунке 1 приведено содержимое данных таблиц. Предположим, что данные языки запросов не имеют ограничений на использование символов русского языка в именах атрибутов. В таблице PD поля Поставщик# и Деталь# по отдельности являются внешним ключом для таблиц S и Р соответственно.
Примем, что имена доменов (множества допустимых значений) будут совпадать с именами атрибутов. Исключением будут атрибуты Город_Поставщик (город, в котором расположен поставщик) и Город_Деталь (город, в котором изготавливается деталь), имеющие общий домен: названия городов.
Именем этого домена будет, например, Город. Домены имеют следующие типы данных:
Деталь# – символьный тип, длина строки 6,
Имя – символьный тип, длина строки 20,
Статус – цифровой тип, длина значения 5,
Город – символьный тип, длина строки 15,
Деталь# – символьный тип, длина строки 6,
Тип – символьный тип, длина строки 6,
Вес – цифровой тип, длина значения 5,
Количество – цифровой тип, длина значения 5.