Реляционное исчисление

Примитивные реляционные операторы

Зависимые реляционные операторы

Как было сказано в начале главы, не все операторы реляционной алгебры являются независимыми - некоторые из них выражаются через другие реляционные операторы.

Оператор соединения

Оператор соединения определяется через операторы декартового произведения и выборки. Для оператора естественного соединения добавляется оператор проекции.

Оператор пересечения

Оператор пересечения выражается через вычитание следующим образом:

A INTERSECT B = A MINUS (A MINUS B)

Оператор деления

Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:

A DEVIDEBY B = A[X] MINUS((A[X] TIMES B)MINUS A)[X]

Таким образом показано, что операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными.

 

 

Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются независимымиоператорами- их нельзя выразить друг через друга. Еще их иногда называют примитивными.

Оператор декартового произведения - это единственный оператор, увеличивающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, выборку, проекцию.

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

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

Операторы объединения и вычитания – также являются примитивными реляционными операторами.

 

 

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

Рассмотрим запрос:

 

Кто из торговых агентов работает в Ярославле?

 

В реляционном исчислении этот запрос выполняется следующим образом:

 

{r.SalpersName : r IN SalesPerson AND r.Office = ‘Ярославль’}

 

Фигурные скобки означают, что ответом на запрос будет множество значений данных. Приведенное здесь решение иллюстрирует почти все элементы реляционного исчисления. Объясним значение частей нашего решения:

1) r – это переменная, обозначающая произвольную строку. Таблица, из которой берется r, определяется выражением «r IN SalesPerson», которое обозначает, что r строка таблицы SalesPerson. Далее будем использовать для обозначения строк маленькие буквы латинского алфавита;

2) r.SalpersName – значение атрибута SalpersName в строке r;

3) Двоеточие разделяет целевой список и определяющее выражение;

4) «r IN SalesPerson» объясняется в п. 1;

5) «r.Office = ‘Ярославль’» означает, что значение атрибута Office в строке r равно ‘Ярославль’.