|
Программирование >> Хронологические базы данных
в реляционной модели, как она изначально была сформулирована Коддом, умышленно применялись определенные термины. Например, сам термин отношение практически не использовался в то время в теории информационных технологий, хотя такое понятие иногда употреблялось в других областях. Суть заключалась в том, что многие распространенные тогда термины были очень нечеткими - им не хватало точности, необходимой для такой формальной теории, которую предложил Кодд. Например, рассмотрим термин запись . В разное время и в различных контекстах он мог означать экземпляр записи или тип записи, логическую запись или физическую запись, хранимую запись или виртуальную запись, а возможно, и еше что-нибудь. Поэтому в формальной реляционной модели термин запись не используется вообше - вместо него применяется термин кортеж (tuple), точное определение которого дал сам Кодд, когда впервые его ввел. Мы не станем приводить здесь это определение, а лишь отметим, что термин кортеж приблизительно соответствует понятию строки (так же, как термин отношение приблизительно соответствует понятию таблицы). При дальнейшем изучении более формальных аспектов реляционных систем в части 11 мы будем использовать более формальную терминологию, однако здесь мы не станем придерживаться строго формальных терминов, а воспользуемся более привычными, такими как строка и столбец . Однако один формальный термин мы все-таки будем использовать довольно часто - это термин отношение . Снова обратимся к базе данных отделов и сотрудников, представленной на рис. 3.1. Заметим, что таблицы DEPT и ЕМР в базе данных фактически являются переменными отношений, т.е. их значения - это значения отношений (различные значения отношений в разное время). Предположим, например, что таблица ЕМР в данный момент имеет значение {значение отношения), которое показано на рис. 3.1, и далее предположим, что мы удалили строку о сотруднике с фамилией Saito (его номер - Е4). DELETE ЕМР WHERE ЕМР# = Е4 ; Результат выполнения этой операции показан на рис. 3.3.
Puc. 3.3. Переменная-отношение ЕМР после удаления строки сотрудника с кодом Е4 Концептуально это можно прокомментировать таким образом: старое значение отношения ЕМР было заменено в целом совершенно другим, новым значением отношения. Конечно, старое значение (с четырьмя строками) и новое значение (с тремя строками) очень похожи, но концептуально они являются разными. На самом деле данная операция удаления строки, по сути, - это просто другой, упрошенный способ записи для определенной операции реляционного присвоения, которая могла бы выглядеть примерно так. ЕМР := ЕМР MINUS ( ЕМР WHERE EMPt = Е4 ) ; {Замечание. Как первоначальный оператор DELETE, так и равносильный ему оператор присвоения записаны на языке Tutorial D [3.3]. Ключевое слово MINUS используется в языке Tutorial D для реляционной операции разности. Подробности приводятся в главе 6.) Как и при любом присвоении, здесь с концептуальной точки зрения сначала вычисляется выражение, расположенное справа от знака присвоения, а затем результат присваивается переменной, которая записана перед знаком присвоения (по определению перед знаком присвоения может быть, естественно, только переменная). В целом, как уже отмечалось, задача заключается в том, чтобы заменить старое значение отношения ЕМР новым . Естественно, что операции INSERT и UPDATE также по сушеству являются другой формой записи соответствуюших реляционных операций присвоения. Но вот что огорчает: во многих публикациях термин отношение используется, когда в действительности подразумевается переменная отношения (а также тогда, когда подразумевается само отношение, т.е. значение отношения). А это, как показывает практика, приводит к недоразумениям. Поэтому в дальнейшем здесь мы будем четко различать переменные отношений и сами отношения. Следуя примеру публикации [3.3], для переменной отношения (relation variable) будем использовать термин переменная-отношение (сокращенный английский вариант- relvar), и только его, во всех случаях, когда речь будет идти не об отношении, а о переменной отношения. Замечание. Следует предупредить читателя, что термин relvar (переменная-отношение) не является общепринятым, хотя должен быть таковым! Мы действительно считаем, что очень важно различать сами отношения (т.е. значения отношений) и переменные отношений, хотя предыдущие издания настоящей книги также этим грешили и большая часть литературы по базам данных не придает этому значения. 3.4. Смысл отношений в главе 1 отмечалось, что столбцы в отношениях связаны с типами данных. А в конце раздела 3.2 мы говорили, что реляционная модель включает неограниченный набор типов [данных] . Помимо всего прочего, это означает, что пользователи могут определять собственные типы (а также, конечно, применять определенные системой или встроенные типы). Например, определять типы можно представленным ниже способом (снова воспользуемся синтаксисом языка Tutorial D, причем многоточие ... здесь заменяет определения, которые для нас сейчас не важны). ТУРЕ ЕМР# ... ; ТУРЕ NAME ... ; ТУРЕ DEPTt ... ; ТУРЕ MONEy ... ; Тип EMPt, например, можно рассматривать, как множество всевозможных номеров служащих, тип NAME - как .множество всевозможных имен, и т.д. Теперь обратимся к рис. 3.4, который фактически представляет собой часть рис. 3.1 с переменной-отношением ЕМР, которая была расширена с целью указания типов столбцов. Как показано на этом рисунке, каждое отношение, точнее, каждое значение отношения, состоит из двух частей: набора пар имя-столбца:имя-типа (заголовок) и набора строк, согласованных с этим заголовком (тело). Как мы увидим в главе 5, для типов данных чаще используют термин домены .
Puc. 3.4. Пример значения отношения ЕМР с отображением типов столбцов Замечание. На практике компоненты заголовка имя-тип зачастую опускают, как это делали и мы во всех предыдущих примерах. Однако необходимо учитывать, что концептуально они всегда присутствуют. Рассмотрим один важный, хотя и не столь распространенный, способ представления смысла отношений. Во-первых, данное отношение г и заголовок отношения г представляют определенный предикат или логическую функцию. Во-вторых, как упоминалось в главе 1, каждая строка в теле отношения г представляет собой определенное истинное высказывание, полученное из предиката путем подстановки определенных значений аргументов соответствующего типа вместо местодержателей или параметров этого предиката (реализация предиката). Например в случае, представленном на рис. 3.4, предикат будет следующим. Служащий с номером EMPi по фамилии ENAME работает в отделе с номером DEPTi и получает зарплату SALARY. Здесь параметрами являются EMPt, ENAME, DEPTt и SALARY, которые, конечно же, соответствуют четырем столбцам переменной-отношения ЕМР. Вот примеры соответствующих истинных утверждений. Служащий с номеро.м El по фамилии Lopez работает в отделе с номером Dl и получает зарплату 40 тыс. долларов в год. (Получено путем подстановки в параметр EMPt значения Е1, в параметр NAME- значения Lopez, в параметр DEPTt - значения D1 ив параметр SALARY - значения 40К.) Служащий с но.мером Е2 по фамилии Cheng работает в отделе с номером D1 и получает зарплату 42 тыс. долларов в год. (Получено путем подстановки в параметр EMPt значения Е2, в параметр NAME - значения Cheng, в параметр DEPTt - значения Dl ив параметр SALARY- значения 42К.) Короче говоря: типы - это объекты (множества объектов), которые можно обсуждать; отношения - это факты (множества фактов), касающиеся объектов, которые можно обсуждать. (Есть прекрасная аналогия, которая может помочь вам понять смысл и запомнить эти важные определения: Типы связаны с отношениями точно так, как существительные связаны с предложениями.) В нашем примере то, что мы можем обсуждать, - это номера служащих, их имена, номера отделов и значения денежных сумм, а то, что мы можем
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |