Главная » SQL, Базы данных » Реляционная алгебра

0

Реляционная  алгебра  —  это  коллекция  операций,  которые   принимают отношения   в   качестве   операндов   и   возвращают   отношение   в   качестве результата. Первая версия этой алгебры была определена Коддом в [5.1] и [7.1]; основным  источником  сведений  об   этой  "оригинальной"  алгебре  принято считать [7.1]. Эта "оригинальная" алгебра включала восемь операций, которые подразделялись  на  описанные  ниже  две  группы  с  четырьмя   операциями каждая.

1.  Традиционные операции с множествами — объединение, пересечение,

разность и де

картово произведение (все они были немного модифицированы с учетом того факта,

что их операндами являются именно отношения, а не произвольные

множества).

2.  Специальные реляционные операции, такие как сокращение (известное также под

названием выборки), проекция, соединение и деление.

На рис. 7.1 приведена неформальная иллюстрация к описанию принципов действия этих операций.

Рис. 7.1. Восемь первоначальных операций (краткая иллюстрация)

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

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

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

■    Прежде всего, выражаясь неформально, рассматриваемые операции применимы ко всем отношениям; фактически они являются в полном смысле слова универсальными операциями, которые связаны с генератором типа RELATION И поэтому могут применяться к любому конкретному типу отношения, полученному путем вызова этого генератора типа.

■    Кроме того, почти все операции, которые будут рассматриваться в этой главе, в действительности представляют собой просто сокращенную запись! Дополнительная информация по этой важной теме приведена в разделе 7.10.

■    Далее отметим, что все эти операции предназначены только для чтения (т.е. они "читают", но не обновляют свои операнды). Таким образом, они применяются именно к значениям (разумеется, к значениям отношений) и поэтому, естественно, к тем значениям отношений, которые оказались во время их применения текущими значениями переменных отношения.

■    Наконец, из предыдущего замечания следует, что имеет смысл, например, рассуждать о "проекции переменной отношения R по атрибуту А"; это выражение являет ся определением отношения, полученного путем выполнения операции проекции по атрибуту А над текущим значением указанной переменной отношения R. Но иногда удобнее использовать выражения наподобие "проекции переменной отношения R по атрибуту А" немного в ином смысле. Например, предположим, что оп ределено представление SC переменной отношения поставщиков S, которое со стоит только из атрибутов s# и CITY этой переменной отношения. В таком случае можно применять неформальную, но очень удобную формулировку, что перемен ная отношения SC является "проекцией переменной отношения s по атрибутам s# и CITY"; в более строгом смысле это выражение означает, что значение sc в любой указанный момент времени является проекцией значения переменной от ношения S по атрибутам s# и CITY В ТОТ же момент времени. Поэтому в данном смысле можно вести речь о проекциях переменных отношения как таковых, а не просто о проекциях текущих значений переменных отношения. Автор надеется, что такое двухцелевое использование им терминологии не вызовет каких-либо недоразумений.

План этой главы состоит в следующем. За этим вступительным разделом  повторно рассматривается  и  излагается  намного  более  подробно  тема  реляционного  свойства замкнутости (раздел 7.2). Затем в разделах 7.3 и 7.4 подробно описаны оригинальные восемь операций Кодда, а в разделе 7.5 приведены примеры того, как могут использоваться эти операции для формулировки запросов. После этого в разделе 7.6 обсуждается более общий вопрос о том, для чего предназначена эта алгебра. В разделе 7.7 автор поднимает еще целый ряд различных тем. Далее, в разделе 7.8 приведено описание некоторых полезных дополнений к оригинальной алгебре Кодда, включая, в частности, такие важные

операции, как EXTEND И SUMMARIZE. В разделе 7.9 рассматриваются операции для прямого и обратного преобразования отношений с атрибутами в виде отношений в отношения без таких атрибутов. Наконец, в разделе 7.10 приведено краткое резюме данной главы.

Примечание. Отложим обсуждение соответствующих средств SQL до главы 8 по причинам, которые будут описаны в настоящей главе.

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии