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

3.4. Смысл отношений

В главе 1 отмечалось, что столбцы в отношениях связаны с типами данных2. А в конце раздела 3.2 мы говорили, что реляционная модель включает "неограниченный на- бор типов [данных]". Помимо всего прочего, это означает, что пользователи могут оп- ределять собственные типы (а также, конечно, применять определенные системой или встроенные типы). Например, определять типы можно представленным ниже способом (снова воспользуемся синтаксисом языка Tutorial D, причем многоточие здесь за- меняет определения, которые для нас сейчас не важны).

TYPE EMPi ... ; TYPE NAME ... ; TYPE DEPTi ... ; TYPE MONEY ... ;

Тип EMPi, например, можно рассматривать, как множество всевозможных номеров служащих, тип NAME — как множество всевозможных имен, и т.д.

Как мы увидим в главе 5, для типов данных чаще используют термин "домены ".

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

Рис. 3.4. Пример значения отношения ЕМР с отображением типов столбцов

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

Рассмотрим один важный, хотя и не столь распространенный, способ представления смысла отношений.

  • Во-первых, данное отношение г и заголовок отношения г представляют опреде- ленный предикат или логическую функцию.

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

Например в случае, представленном на рис. 3.4, предикат будет следующим.

Служащий с номером EMPi по фамилии ENAME работает в отделе с номером DEPTt и получает зарплату SALARY.

Здесь параметрами являются EMPt, ENAME, DEPTt и SALARY, которые, конечно же, соот- ветствуют четырем столбцам переменной-отношения ЕМР. Вот примеры соответствую- щих истинных утверждений.

Служащий с номером 'El' по фамилии 'Lopez' работает в отделе с номером 'Dl' и получает зарплату 40 тыс. долларов в год.

(Получено путем подстановки в параметр EMPi значения ' Е1', в параметр NAME — зна- чения ' Lopez', в параметр DEPTt — значения ' D1' ив параметр SALARY — значения 40К.)

Служащий с номером 'Е2' по фамилии 'Cheng' работает в отделе с номером 'D1' и получает зарплату 42 тыс. долларов в год.

(Получено путем подстановки в параметр EMPt значения 'Е2', в параметр NAME — значения 'Cheng', в параметр DEPTt — значения 'Dl' ив параметр SALARY — значения 42К.) Короче говоря:

  • типы — это объекты (множества объектов), которые можно обсуждать;

  • отношения — это факты (множества фактов), касающиеся объектов, кото- рые можно обсуждать.

(Есть прекрасная аналогия, которая может помочь вам понять смысл и запомнить эти важные определения: Типы связаны с отношениями точно так, как существительные связаны с предложениями.) В нашем примере то, что мы можем обсуждать, — это номе- ра служащих, их имена, номера отделов и значения денежных сумм, а то, что мы можем

сказать об обсуждаемом, — это истинное высказывание такого вида: "Служащий с опре- деленным номером служащего имеет определенное имя, работает в определенном отделе и получает определенную зарплату". Из вышесказанного следует, что:

  • во-первых, необходимы и типы, и отношения (без типов нам не о чем говорить, без отношений мы ничего не сможем сказать);

  • во-вторых, типы и отношения достаточны так же, как и необходимы, т.е., логи- чески говоря, нам не нужно что-либо еще.

Замечание. Также можно сделать вывод о том, что типы и отношения — это не одно и то же. К сожалению, в некоторых коммерческих продуктах (нереляционных по опре- делению!) эти два понятия смешиваются. Мы еще вернемся к данному вопросу в гла- ве 25 (раздел 25.2).

Кстати, важно понимать, что каждое отношение имеет связанный с ним предикат, включая отношения, полученные с помощью реляционных операторов, например опера- тора соединения. Отношение DEPT на рис. 3.1 и три результирующих отношения на рис. 3.2 имеют такие предикаты.

  • DEPT: "Отдел с номером DEPTi называется DNAME и имеет бюджет BUDGET".

  • Выборка строк из DEPT, где BUDGET > 8М: "Отдел с номером DEPTi называется DNAME и имеет бюджет BUDGET, который больше восьми миллионов долларов".

  • Извлечение столбцов DEPTt и BUDGET из DEPT: "Отдел с номером DEPTf имеет ка- кое-то название и бюджет BUDGET".

  • Соединение переменных-отношений DEPT и ЕМР на основе столбца DEPTi: "Отдел с номером DEPTt называется DNAME и имеет бюджет BUDGET, а служащий с номером EMPt по фамилии ENAME работает в отделе с номером DEPTi и получает зарплату SALARY" (заметим, что этот предикат имеет шесть параметров, а не семь, посколь- ку две ссылки на DEPTt обозначают один и тот же параметр).

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