Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике 3 семестр (Базы данных).doc
Скачиваний:
47
Добавлен:
07.12.2018
Размер:
1.28 Mб
Скачать

Тема 6 основны реляционной алгебры

Обработку данных реляционной модели можно реализовать двумя различными, но эквивалентными способами: реляци­онной алгеброй и реляционным исчислением. В данном разделе рассмотрены начала реляционной алгебры [20, С. 55-64].

6.1. Основные определения, относящиеся к реляционной алгебре

Реляционная алгебра представляет собой основу доступа к реляционным данным. Главная цель алгебры — обеспечить запись выражений, которые могут использоваться для сле­дующих целей:

- определение данных для их выбора из базы как результат операции выборки;

- определение данных для модификации (вставки, изменения или удаления) как результат операции обновления;

- определение данных для их визуализации через представ­ления;

- определение данных для сохранения в виде «мгновенного снимка» отношения;

а

- определение данных, для которых осуществляется кон­троль доступа (определение правил безопасности);

- определение данных, которые входят в область для неко­торых операций управления одновременным доступом (определение требований устойчивости);

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

В современных СУБД, использующих реляционную модель, непосредственно ни реляционная алгебра, ни реляционное исчисление не используются.

Фактическим стандартом досту­па к реляционным данным является язык SQL (Structured Query Language, структурированный язык запросов).

Реляционная алгебра, определенная Коддом, состоит из 8 операторов, разделенных на две группы:

- традиционные операции над множествами (объединение, пересечение, вычитание, декартово произведение);

- специальные реляционные операции (выборка, проекция, со­единение, деление).

Кроме того, в состав алгебры включается операция при­сваивания, позволяющая сохранить в базе данных результа­ты вычисления алгебраических выражений, а также опера­ция переименования атрибутов, дающая возможность кор­ректно сформировать заголовок (схему) результирующего отношения.

Замкнутость реляционной алгебры

Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов и возвра­щающих отношения в качестве результата. Таким образом, реляционный оператор f выглядит как функция с отноше­ниями в качестве аргументов:

R = f (R1, R2, …, Rn).

В качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:

R = f (f1,(R11, R12, …,R1n), f2,(R21, R22, …,R2m)…)

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

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

Отношения, совместимые по типу

Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Как было показано в предыдущей лекции, отношение состоит из заголовка и тела. Операция объединения двух отношений есть объединение двух множеств кортежей, взятых из тел соответствующих отношений. Однако будет ли результат считаться отношением? Во-первых, если исходные отношения имеют разное количество атрибутов, то, очевидно, что множество, являющееся объединением таких разнотипных кортежей, нельзя предста­вить в виде отношения. Во-вторых, пусть даже отношения имеют одинаковое количество атрибутов, но атрибуты имеют личные наименования. Тогда возникает вопрос, как тогда определить заголовок отношения, полученного в результате объединения множеств кортежей? В-третьих, пусть отноше­ния имеют одинаковое количество атрибутов, атрибуты име­ют одинаковые наименования, но определены на различных доменах. Тогда опять же объединение кортежей не будет об­разовывать отношение.

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

1) отношения имеют одно и то же множество имен атрибу­тов, т. е. для любого атрибута в одном отношении най­дется атрибут с таким же наименованием в другом отно­шении;

2) атрибуты с одинаковыми именами определены на одних и тех же доменах.

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

Оператор переименования атрибутов имеет следующий син­таксис:

R rename A1, A2, …, An as new A1, A2, …, An;

где R — отношение, A1, A2, …, An — исходные имена атрибу­тов, new A1, A2, …, An. — новые имена атрибутов. В резуль­тате применения оператора переименования атрибутов получаем новое отношение с измененными именами атрибутов.

Пример. Оператор rename возвращает неименованное отношение, в котором атрибут Student переименован в Head (Староста):

R rename Student as Head;