Скачиваний:
147
Добавлен:
02.05.2014
Размер:
2.66 Mб
Скачать

3.3. Отношения и переменные-отношения

Если предположить, что реляционная база данных — это, по существу, просто база данных, в которой данные представлены в виде таблиц (а это так и есть), то возникает резонный вопрос: почему же мы называем такую базу данных именно реляционной, а не, скажем, табличной? Ответ прост (фактически он был дан еще в главе 1): термин "relation" (отношение) — это математическое название таблицы (точнее, определенного вида таблиц; подробности приводятся в главе 5). Например, можно сказать, что база данных отделов и служащих, представленная на рис. 3.1, содержит два отношения.

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

  • Как уже отмечалось, реляционные системы основаны на реляционной модели. Ре- ляционная модель, в свою очередь, — это абстрактная теория данных, основанная на некоторых положениях математики (в основном, теории множеств и логики предикатов).

  • Принципы реляционной модели были изначально заложены в 1969 и 1970 годах Е.Ф. Коддом (E.F. Codd), который в то время был исследователем, работавшим в корпорации IBM. В конце 1968 года Кодд, математик по образованию, впервые пришел к заключению, что математические дисциплины можно использовать для привнесения в область управления базами данных строгих принципов и точности. Именно этих качеств недоставало данной области в то время. Идеи Кодда впервые подробно были изложены в ставшей классической статье "A Relational Model of Data for Large Shared Data Banks" (см. [5.1] в главе 5).

  • С того времени эти идеи стали общепринятыми и оказали весьма существенное влия- ние на все аспекты технологии баз данных, а также на другие области, такие как искус- ственный интеллект, обработка естественных языков и разработка аппаратных систем.

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

Снова обратимся к базе данных отделов и сотрудников, представленной на рис. 3.1. Заметим, что таблицы DEPT и ЕМР в базе данных фактически являются переменными от- ношений, т.е. их значения — это значения отношений (различные значения отношений в разное время). Предположим, например, что таблица ЕМР в данный момент имеет значе- ние (значение отношения), которое показано на рис. 3.1, и далее предположим, что мы удалили строку о сотруднике с фамилией Saito (его номер — 'Е4').

DELETE ЕМР WHERE EMPt = 'Е4' ; Результат выполнения этой операции показан на рис. 3.3.

ЕМР

ЕМР#

ENAME

DEPT#

SALARY

Е1

Lopez

Dl

40K

Е2

Cheng

Dl

42K

ЕЗ

Finzi

D2

30K

Рис. 3.3. Переменная-отношение ЕМР после удаления строки сотрудника с кодом 'Е4'

Концептуально это можно прокомментировать таким образом: старое значение отно- шения ЕМР было заменено в целом совершенно другим, новым значением отношения. Ко- нечно, старое значение (с четырьмя строками) и новое значение (с тремя строками) очень похожи, но концептуально они являются разными. На самом деле данная операция удале- ния строки, по сути, — это просто другой, упрощенный способ записи для определенной операции реляционного присвоения, которая могла бы выглядеть примерно так.

ЕМР := ЕМР MINUS ( ЕМР WHERE EMPi = 'Е4' ) ;

(Замечание. Как первоначальный оператор DELETE, так и равносильный ему оператор присвоения записаны на языке Tutorial D [3.3]. Ключевое слово MINUS используется в язы- ке Tutorial D для реляционной операции разности. Подробности приводятся в главе 6.)

Как и при любом присвоении, здесь с концептуальной точки зрения сначала вычис- ляется выражение, расположенное справа от знака присвоения, а затем результат при- сваивается переменной, которая записана перед знаком присвоения (по определению перед знаком присвоения может быть, естественно, только переменная). В целом, как уже отмечалось, задача заключается в том, чтобы заменить "старое" значение отноше- ния ЕМР "новым".

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

Но вот что огорчает: во многих публикациях термин отношение используется, когда в действительности подразумевается переменная отношения (а также тогда, когда подра- зумевается само отношение, т.е. значение отношения). А это, как показывает практика, приводит к недоразумениям. Поэтому в дальнейшем здесь мы будем четко различать пе- ременные отношений и сами отношения. Следуя примеру публикации [3.3], для пере- менной отношения (relation variable) будем использовать термин переменная- отношение (сокращенный английский вариант— relvar), и только его, во всех случаях, когда речь будет идти не об отношении, а о переменной отношения.

Замечание. Следует предупредить читателя, что термин "relvar" (переменная- отношение) не является общепринятым, хотя должен быть таковым! Мы действительно считаем, что очень важно различать сами отношения (т.е. значения отношений) и пере- менные отношений, хотя предыдущие издания настоящей книги также этим грешили и большая часть литературы по базам данных не придает этому значения.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]