Программирование >>  Хронологические базы данных 

1 ... 91 92 93 [ 94 ] 95 96 97 ... 348


Поскольку ограничение перехода TRC2 задано для базы данных (оно включ< . две различные переменные-отношения - поставшиков и поставок), его проверка бу. т отложена до момента выполнения оператора COMMIT. Здесь имена исходных переме -ных-отношений S и SP используются для обозначения соответственно перемепных-отношений S и SP в момент до начала выполнения транзакции

Для ограничений типов и атрибутов противопоставление офаничений состоя! \я и перехода лишено смысла.

8.8. Ключи

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

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

Потенциальные ключи

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

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

а) Уникальность. Никакие допустимые значения переменной-отношения R не содержат двух различных кортежей с одинаковыми значениями атрибутов множества К.

Обратите внимание, что определение применяется именно к переменным-отношениям Аналогичное понятие можно определить и для значений отношения (см [3 3]), но пере.менные-отношения представляют более важный случай



б) Неизбыточность. Никакое из собственных подмножеств множества К не обладает свойством уникальности.

Обратите внимание, что каждая переменная-отношение имеет по крайней мере один потенциальный ключ. Свойство уникальности подобных ключей не требует дополнительных разъяснений. Относительно свойства неизбыточности следует предоставить некоторые пояснения. Суть в том, что если определить потенциальный ключ , который не будет обладать свойством неизбыточности, системе об этом ничего не будет известно и она не сможет должным образом обеспечить выполнение соответствующего ограничения целостности. Пусть, например, мы определили потенциальный ключ отношения поставщиков не как атрибут SI, а как комбинацию атрибутов {SI ,CITY}. Тогда система не сможет соблюдать ограничение, требующее глобальной уникальности номера поставщика; вместо этого в ней будет поддерживаться более слабое ограничение, согласно которому номер поставщика должен быть уникальным в масштабе одного города. По этой причине среди прочих условий требуется, чтобы потенциальные ключи не содержали какие-либо атрибуты, которые не имеют отношения к обеспечению его уникальной идентификации.

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

Для описания потенциального ключа в определении переменной-отношения будем использовать следующий синтаксис языка Tutorial D.

KEY { <список имен атрибутов> } Ниже приведено несколько примеров.

VAR S BASE RELATION { SI SI,

SNAME NAME, STATUS INTEGER, CITY CHAR } KEY { SI } ;

Замечание. В предыдущей главе мы уже приводили это определение с использованием фразы PRIMARY KEY вместо KEY. Подробности можно найти в подразделе Первичные и альтернативные ключи , приведенном ниже в этом разделе.

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



VAR SP BASE RELATION

{ SI SI,

PI PI,

QTY QTY } KEY { SI, PI } ... ;

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

VAR ELEMENT BASE RELATION {NAME NAME,

SYMBOL CHAR,

ATOMICI INTEGER } KEY { NAME } KEY { SYMBOL } KEY { ATOMICI } ;

В этом примере показана переменная-отношение с несколькими различными (простыми) потенциальными ключами.

VAR MARRIAGE BASE RELATION {HUSBEND /* Муж */ NAME,

WIFE /* Жена */ NAME,

DATE /* Дата бракосочетания */ DATE } /* Подразумевается, что муж может иметь лишь одну жену, а жена */ /* лишь одного мужа, а также, что каждый из супругов состоит в */ /* браке первый раз */

KEY { HUSBEND, DATE } KEY { DATE, WIFE } KEY { WIFE, HUSBEND } ;

В этом примере показана переменная-отношение с несколькими различными составными (и перекрывающимися) потенциальными ключами.

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

S WHERE SI = SI ( S3 )

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

S WHERE CITY = Paris



1 ... 91 92 93 [ 94 ] 95 96 97 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика