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

5.3. Значения отношений

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

■ Пусть задано множество из п типов или доменов 7) (/ = 1, 2, ... , п), причем все они необязательно должны быть различными. Тогда г будет отношением, определен- ным на этих типах, если оно состоит из двух частей: заголовка и тела9, где:

а) заголовок— это множество из п атрибутов вида Ас.Тс здесь А\имена ат- рибутов (которые должны отличаться одно от другого) отношения г, а 7] — со- ответствующие имена типов (/ = 1,2,..., и);

б) тело — это множество из т кортежей г; здесь г, в свою очередь, является мно- жеством компонентов вида A{.v-S, в которых Vj — значение типа 7], т.е. значение атрибута для атрибута А\ в кортеже t (i = 1,2,и).

Значения тип называются соответственно кардинальностью и степенью отношения г. Из этого определения вытекает следующее.

9 Заголовок еще иногда называют схемой (отношения). Используется также термин содер- жание (intension). В этом случае тело называется расширением (extention).


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

  2. Говорят, что атрибут А\ имеет тип 7] или (иногда) определен на типе 7]. Отметим, что любое число различных атрибутов из одного отношения или из различных от- ношений может быть одного и того же типа (см. рис. 3.8 в главе 3, рис. 4.5 и рис. 4.6 в главе 4).

  3. В любой заданный момент могут существовать значения определенного типа, не представленные в базе данных как значение одного из атрибутов этого типа. На- пример, значение 'Р8' может быть номером некоторой детали, хотя на рис. 3.8 де- тали с номером ' Р8' нет.

  1. Как сказано в определении, значение п, задающее количество атрибутов некоторо- го отношения, называется его степенью (иногда используется термин арность). В последнем случае отношение степени 1 называется унарным, степени 2 — бинар- ным, степени 3 — тернарным, степени п — «-арным. Таким образом, реляцион- ная модель в общем случае имеет дело с я-арными отношениями, где п — произ- вольное натуральное число.

  2. Иногда вместо термина кортеж используется термин п-кортеж (например 4- кортеж, 5-кортеж и т.д.), однако чаще всего префикс "л-" опускается.

  3. Когда мы говорим, что Н является заголовком отношения г, то, если быть более точным, это означает, что отношение г является отношением типа RELATION{H> (имя этого типа именно RELATION{H}). Дальнейшее обсуждение данного вопроса будет продолжено в разделе 5.4.

В качестве примера рассмотрим представленную на рис. 5.1 таблицу (в этом случае мы умышленно не называем ее отношением), чтобы проверить, насколько она соответ- ствует данному выше определению.

■ В этой таблице есть четыре основных типа, а именно: тип номеров поставщиков (SI), тип имен (NAME), тип значений статуса (STATUS) и тип названий городов (CITY).

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

■ В таблице действительно есть две части — строка имен столбцов и некоторое множество строк данных. Рассмотрим вначале строку имен (или заголовков) столбцов.

( St, SNAME, STATUS, CITY )

Эта строка действительно представляет собой набор упорядоченных пар.

{Si : St SNAME : NAME , STATUS : STATUS , CITY : CITY }

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

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

■ Что касается остальной части таблицы, то это, конечно, множество, а именно — множество строк данных. Давайте сконцентрируем внимание на какой-нибудь од- ной строке, например на следующей.

( SI, Smith, 20, London )

Эта строка в действительности представляет собой множество упорядоченных пар.

{Si : S# { 'SI' ) ,

SNAME : NAME ( 'Smith' ) ,

STATUS : 20 ,

CITY : 'London' }

Первый компонент каждой пары — это имя атрибута, а второй компонент — со- ответствующее значение атрибута. Часто в неформальном описании имена атри- бутов опускают, поскольку мы знаем, что каждое отдельное значение в таблице в действительности является значением того атрибута, имя которого указано в заго- ловке соответствующего столбца. Кроме того, известно, что это значение принад- лежит типу, положенному в основу данного атрибута. Например, значение 'S1' (точнее, Sf ('S1'))— это значение атрибута St и оно взято из соответствующего типа, а именно — из типа номера поставщика (который также называется St). Та- ким образом, можно согласиться, что каждая строка представляет собой некото- рый кортеж в смысле данного выше определения.

Из всего сказанного можно сделать вывод о том, что таблица S на рис. 5.1 может рассматриваться как изображение отношения в смысле данного выше определения, ес- ли условиться, как правильно "читать" такое изображение (т.е. если будут определены правила интерпретации таких изображений). Иначе говоря, необходимо условиться, что есть некоторые типы, лежащие в основе; каждый столбец соответствует в точности одному из этих типов; каждая строка представляет кортеж; каждое значение атрибута принадлежит соответствующему типу и т.д. Если принять все эти "правила интерпре- тации", тогда и только тогда можно будет говорить, что "таблица" — это допустимое изображение отношения.

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

Замечание. Если у вас возникли затруднения с пониманием идеи некоторых раз- личий между отношением и таблицей, вам поможет следующее рассуждение. Преж- де всего, одним из неоспоримых преимуществ реляционной модели является то, что ее основной абстрактный объект (т.е. отношение) имеет такое простое представле- ние на бумаге (представление в виде таблицы). Именно оно делает реляционные системы простыми в использовании и простыми для понимания, а также упрощает понимание поведения реляционных систем. Однако, к сожалению, табличное пред- ставление предполагает некоторые неверные факты. К примеру, оно явно предпо- лагает, что строки таблицы (т.е. кортежи отношения) расположены в определенном порядке сверху вниз, хотя это неверно. Дальнейшее обсуждение этого вопроса при- водится в следующем разделе.

Свойства отношений

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

  • в них нет одинаковых кортежей;

  • кортежи отношения не имеют упорядоченности в направлении сверху вниз;

  • атрибуты в кортежах не упорядочены слева направо;

  • каждый кортеж содержит ровно одно значение для каждого атрибута.

Свойство 1. Отсутствие одинаковых кортежей

Данное свойство следует из того факта, что тело отношения — это математическое множество (кортежей), а в математике множества по определению не содержат одинако- вых элементов.

Замечание. На самом деле совершенно очевидно, что понятие "одинаковые кортежи" просто бессмысленно. Рассмотрим, например, отношение с атрибутами Si и CITY (имеется в виду, что поставщик с номером Si находится в городе CITY). Допустим, что в этом отношении есть кортеж, отображающий тот "истинный факт", что поставщик с но- мером 'S1' находится в городе 'London'. Далее, если в отношении есть второй такой же кортеж (допустим, что это возможно), то он также отображает данный "истинный факт". Однако, если истинное утверждение повторить два раза, более истинным оно не станет.

Между прочим, первое свойство служит хорошей иллюстрацией того факта, что от- ношение и таблица — это не одно и то же, поскольку таблица (в общем случае) может содержать одинаковые строки (при отсутствии правил, запрещающих это), в то время как отношение не может содержать одинаковых кортежей в принципе. (Суть в том, что "отношение", содержащее одинаковые кортежи, по определению не будет отношени- ем!) К большому сожалению, стандарт языка SQL допускает присутствие в таблицах одинаковых строк. Здесь было бы неуместным обсуждать все причины того, почему на- личие одинаковых строк является ошибкой (см. развернутое обсуждение этого вопроса в [5.3], [5.6]). Для достижения наших целей достаточно остановиться на том, что реляци- онная модель просто не допускает наличия одинаковых строк. Здесь и далее в этой книге будет предполагаться, что одинаковые строки отсутствуют. (Это замечание касается, в основном, языка SQL. При рассмотрении самой реляционной модели, конечно, никаких предположений делать не нужно.)

Свойство 2. Отсутствие упорядочения кортежей (сверху вниз)

Данное свойство также следует из того, что тело отношения — это математическое множество, а простые множества в математике не упорядочены. К примеру, на рис. 5.1 кортежи отношения S могли бы располагаться в противоположном порядке, но оно при этом оставалось бы тем же самым отношением. Поэтому в отношении нет 5-, 97- или 1- го кортежа, т.е. нет понятий позиционной адресации и следования. В статье [5.6], кото- рая уже упоминалась в связи со свойством отсутствия одинаковых кортежей, показано, почему свойство неупорядоченности кортежей также имеет важное значение (на самом деле эти свойства взаимосвязаны).

Замечание. Действительно, понятие "следование" иногда необходимо для стыковки базы данных с базовым языком программирования, например с языком С или COBOL (см. обсуждение курсоров SQL и предложения ORDER BY в главе 4). Однако эта необ- ходимость привносится не реляционной моделью, а базовым языком. В сущности, ба- зовый язык требует, чтобы неупорядоченные наборы были преобразованы в упорядо- ченные списки или массивы (кортежей), и тогда такая операция, как выбор следующе- го кортежа, будет иметь смысл. Обратите также внимание на то, что эти средства со- ставляют часть исключительно программного интерфейса приложений и конечному пользователю не предъявляются.

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

Свойство 3. Отсутствие упорядочения атрибутов (слева направо)

Данное свойство следует из того факта, что заголовок отношения также определен как множество (атрибутов). Например, на рис. 5.1 атрибуты отношения S могли быть представлены, скажем, в таком порядке: SNAME, CITY, STATUS, St. Это было бы то же са- мое отношение, по крайней мере с точки зрения реляционной модели10. Поэтому не су- ществует первого атрибута или последнего атрибута (и т.п.), не существует следующего атрибута (т.е. нет понятия "следование"). Иначе говоря, атрибут всегда определяется по имени, а не по расположению. Это позволяет избежать некоторых ошибок и неясностей при написании программ. Например, не существует (или не должно существовать) воз- можности возникновения сбоя системы из-за "наложения" одного атрибута на другой. Эта ситуация отличается от ситуации во многих системах программирования, где часто можно использовать физическую смежность логически дискретных элементов, как умышленно, так и случайно, причем многими, но одинаково губительными способами.

Заметим, что вопрос, связанный с порядком атрибутов, — это еще одна область, в кото- рой конкретное представление отношения в виде таблицы предполагает наличие неверных фактов: столбцы таблицы упорядочены слева направо, а атрибуты отношения — нет.

Свойство 4. Каждый кортеж содержит ровно одно значение для каждого атрибута

Последнее свойство непосредственно следует из определения кортежа: кортеж явля- ется множеством из п компонентов или упорядоченных пар вида A\:vt (/' = 1, 2, п). От- ношение, удовлетворяющее этому свойству, называется нормализованным или пред- ставленным в первой нормальной форме (1НФ).

''' Атрибуты математических отношений, в отличие от реляционных, действительно упо- рядочены слева направо.

Замечание.Данное свойство может показаться совершенно очевидным, каковым оно на самом деле и является, особенно если учесть (как вы, возможно, уже догадались), что все отношения нормализованы по определению. Тем не менее у этого свойства есть не- сколько важных следствий, о которых можно узнать из аннотации к статье [5.10], из гла- вы 18 (обсуждение вопроса об отсутствующих данных), а также из следующего раздела.

Атрибуты, значениями которых являются отношения

S SP

Athens

S5 Adams 30

В разделе 5.2 говорилось, что характер значений, составляющих тип данных, может быть произвольным. В частности, возможно существование типа, значениями которого будут отношения, и, следовательно, существование отношения с атрибутами, значения- ми которых также являются отношения. Другими словами, возможно существование от- ношений, в которые вложены другие отношения. Рассмотрим, например, отношение S_SP, показанное на рис. 5.3. Здесь значением атрибута PQ является отношение. Заметьте, в частности, что пустому множеству деталей, поставляемых поставщиком с номером 'S5', соответствует пустое множество (а точнее, пустое отношение).

s#

SNAME

STATUS

CITY

PQ

SI

Smith

20

London

P#

QTY

PI P2

300 200

|P6

100 |

S2

Jones

10

Paris

P#

QTY

PI P2

300 200

p#

QTY

Рис. 5.3. Отношение с атрибутом, значениями которого являются отношения

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

' Обратите внимание на то, что все значения столбцов атомарные... Это значит, что на каждом месте в столбце или строке всегда находится ровно одно значение, а не группа из нескольких значений. Поэтому, например, в таблице ЕМР мы имеем

DEPT#

EMP#

Dl

El

Dl

E2

вместо

DEPT#

EMP#

Dl

E1.E2

Столбец EMPf второй таблицы является примером так называемой повто- ряющейся группы. Повторяющаяся группа— это столбец, ...содержащий по нескольку значений в каждой строке (в общем случае — различное количество значений в разных строках). В реляционных базах данных повторяющиеся груп- пы недопустимы, поэтому использование второго варианта таблицы в рамках реляционной модели запрещено. Вот еще одна цитата из той же книги. [Домены] состоят только из атомарных значений... [Поэтому] отношения не содержат повторяющихся групп. Отношение, отвечающее этим условиям, на- зывается нормализованным или, что равносильно, отношением в первой нор- мальной форме... Под термином отношение в контексте реляционной модели всегда будет подразумеваться нормализованное отношение. Однако, по крайней мере в целом, эти высказывания неверны. Они являются следст- вием ошибочного понимания автором истинной природы типов и предикатов. По причи- нам, которые будут рассмотрены в главе 11 (раздел 11.6), маловероятно, чтобы эти за- блуждения привели к серьезным ошибкам на практике. Тем не менее мы приносим свои извинения всем, кто был введен нами в заблуждение. Во всяком случае в предыдущем издании утверждение о том, что в реляционной модели все отношения всегда нормали- зованы, соответствует действительности. Дальнейшее обсуждение этого вопроса будет продолжено в главе 11.

Отношения и их интерпретация

В заключение этого раздела напомним, что, как сказано в разделе 3.4 главы 3, заголовок отношения можно считать предикатом, а любой кортеж — истинным высказыванием, по- лученным из этого предиката в результате подстановки значения соответствующего типа вместо параметров (или местодержателей) в этом предикате ("конкретизация предика- та"). В действительности допущение замкнутости мира (известное также как интерпре- тация замкнутости мира) гласит: если какой-то другой допустимый кортеж (т.е. согласо- ванный с заголовком отношения) не содержится в теле отношения, можно предположить, что соответствующее ему утверждение ложно. Другими словами, тело отношения содер- жит все такие и только такие кортежи, которым соответствуют истинные утверждения.

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