Предложив реляционную модель данных, Э. Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру. Основная идея реляционной алгебры состоит в том, что коль скоро отношения являются множествами, то средства манипулирования отношениями могут базироваться на традиционных теоретико-множественных операциях (объединение, пересечение и т.д.), дополненных некоторыми специальными операциями, специфичными для баз данных.
Напомним, что алгеброй называется множество объектов (называемое основным множеством) с заданной на нем совокупностью операций. Основным множеством в реляционной алгебре является множество отношений. На нем заданы 8 операций, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор f выглядит как функция с отношениями в качестве аргументов:
R=f(R1, R2, …, Rn)
Реляционная алгебра является замкнутой, т.е. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:
|
|
R=f(f1(R11, R12, …), f2(R21, R22, …), …)
Таким образом, в реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.
Каждое отношение обязано иметь уникальное имя в пределах базы данных. Имя отношения, полученного в результате выполнения реляционной операции, определяется в левой части равенства. Однако можно не требовать наличия имен от отношений, полученных в результате реляционных выражений, если эти отношения подставляются в качестве аргументов в другие реляционные выражения. Такие отношения будем называть неименованными отношениями. Неименованные отношения реально не существуют в базе данных, а только вычисляются в момент вычисления значения реляционного оператора.
Множество реляционных операторов можно разделить на две группы.
Теоретико-множественные операторы:
- Объединение
- Пересечение
- Вычитание
- Декартово произведение
Специальные реляционные операторы:
- Выборка
- Проекция
- Соединение
- Деление
Не все они являются независимыми, т.е. некоторые из этих операторов могут быть выражены через другие реляционные операторы.