Главная » SQL, Базы данных » СМЫСЛ ОТНОШЕНИЙ

0

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

TYPE EMP# … ; TYPE NAME … ; TYPE DEPT# . . . ; TYPE MONEY … ;

Тип ЕМР#, например, можно рассматривать, как множество всевозможных табельных номеров, тип NAME — как множество всевозможных имен и т.д.

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

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

3  Различие между значениями отношения и переменными отношения  фактически представляют  собой особый  случай различия между  значениями и  переменными в целом. Последнее различие подробно анализируется в главе 5.

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

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

■     Во-первых, в определенном отношении r заголовок отношения r представляет со бой определенный предикат (под предикатом подразумевается просто функция с истинностными значениями, которая, как и все функции, имеет ряд формальных параметров).

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

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

Служащий с табельным номером ЕМР# и фамилией ENAME работает в отделе с номером DEPT# и получает зарплату SALARY.

Здесь формальными параметрами являются ЕМР#, ENAME, DEPT# И SALARY, которые, конечно же, соответствуют четырем столбцам переменной отношения ЕМР. Ниже приведены примеры соответствующих истинных утверждений.

Служащий  с табельным  номером  Е1 и фамилией  Lopez работает в  отделе  с

номером  D1 и получает   зарплату 40   тыс.   долл.  в   год.

(Получено путем подстановки в параметр ЕМР# значения Е1, в параметр NAME — значения Lopez, в параметр DEPT# — значения D1 и в параметр SALARY — значения 4 ОК.)

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

(Получено путем подстановки в параметр ЕМР# значения Е2, в параметр NAME

—   значения Cheng, в параметр DEPT# — значения D1 и в параметр  SALARY  —

значения 42К.)

Иными словами:

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

дения;

■     отношения — это факты (множества фактов), касающиеся объектов,

которые могут

стать предметом обсуждения.

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

"Служащий с определенным табельным номером имеет определенное имя, работает в определенном отделе и получает определенную зарплату".

Из вышесказанного следует:

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

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

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

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

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

■     Сокращение отношения DEPT, где BUDGET > 8М. "Отдел с номером DEPT# назы вается DNAME и имеет бюджет BUDGET, который превышает 8 млн. долл.".

■     Проекция, состоящая из столбцов DEPT# и BUDGET отношения DEPT. "Отдел с номером DEPT# имеет некоторое название и бюджет BUDGET".

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

Наконец, следует отметить, что переменные отношения также имеют  предикаты. Таковым является предикат, общий для всех отношений, которые представляют собой возможные значения рассматриваемой переменной отношения. Например, предикат для переменной отношения ЕМР можно представить следующим образом.

Служащий с табельным номером ЕМР# имеет фамилию ENAME,

работает в отделе DEPT# и получает зарплату SALARY

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

По теме:

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