Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование баз данных.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.82 Mб
Скачать

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

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

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

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

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

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

A INTERSECT B = A MINUS (A MINUS B)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{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 равно ‘Ярославль’.

3.2.1 Целевой список и определяющее выражение

Целевой список – это список в выражении реляционного исчисления, определяющий атрибуты таблицы решения.

Определяющее выражение – это условие в выражении реляционного исчисления, ограничивающее вхождение элементов в таблицу решения.

Решением каждого запроса в реляционном исчислении является реляционная таблица, которая задается целевым списком и определяющим выражением. Целевой список определяет атрибуты таблицы решения. На основе определяющего выражения отбираются значения из базы данных, которые войдут в таблицу решения. Объясним, как они работают.

В рассмотренном примере целевым списком был r.SalpersName. Другими словами, таблица решения имеет только один атрибут – имя торгового агента. Значения, входящие в таблицу решения, взяты из тех строк, которые удовлетворяют определяющему выражению:

r IN SalesPerson AND r.Office = ‘Ярославль

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

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

Более того, можно выбрать любое подмножество из этих атрибутов.

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