Введение в системы БД (542480), страница 74
Текст из файла (страница 74)
Необходимо также подчеркнуть, что в этом случае под переменной-отношением необязательно подразумевается непременно базовая переменная-отношение. Золотое правило применимо ко всем переменным-отношениям, как к базовым, так и к производным. В следующей главе мы возвратимся к этому вопросу. В завершение раздела отметим, что точно так, как для каждой переменной-отношения имеется некоторый связанный с ней предикат, так и для всей базы данных имеется связанный с ней предикат базы данных, который определяется как логическое умножение (логическая операция И) всех ограничений базы данных и всех ограничений переменных-отношений, которые были установлены в этой базе данных.
Поэтому мы можем расширить формулировку золотого правила следующим образом'. Ни одна из операций изменения не имеет права переводить переменную- отношение в состояние, нарушающее ее собственный предикат. Ангьтогинно ни одна из транзакций изменения не имеет права переводить базу данных в состояние, нарушающее ее собственный предикапь 8.7. Ограничения состояния и ограничения перехода Во всех описанных до сих пор примерах были представлены ограничения состояния, поскольку они касались тех или иных состояний базы данных.
Однако иногда необходимо также учитывать ограничения перехода, т.е. ограничения для допустимых вариантов перехода от одного корректного состояния к другому. Например, в базе данных персонала может быть установлено множество ограничений перехода, связанных с внесением изменений в сведения о семейном положении. Примерами допустимых типов переходов в этом случае могут служить следующие: З Если бы систел~а поддерлн'инала операцию множественного присвоения Гна эту возможность указывалось в предыдущей сноске), то можно было бы сохранить формулировку золотого правила в его первоначальной и более простой форме.
309 Глава 8. Целостность данных ° никогда не состоял в браке — состоит в браке; ° состоит в браке — овдовел; ° состоит в браке — разведен; ° разведен — состоит в браке. Среди недопустимых типов переходов можно назвать такие: ° никогда не состоял в браке — овдовел; ° никогда не состоял в браке — разведен; ° овдовел — разведен; ° разведен — овдовел. Возвращаясь к примеру базы данных поставщиков и деталей, можно привести пример ограничения перехода, утверждающего, что "статус поставщика никогда не должен уменьшаться".
СОМБТКА1МТ ТКС1 1Б ЕМРТУ ( ( ( В' ( Б(), ЯТАТОБ ) НЕМАНЕ ВТАТОЯ АБ БТАТОВ' ) ООХМ В ( Б(), БТАТОЯ ) ) ЯНЕКЕ БТАТОБ' > ЯТАТОБ ) Лаяснвние. Здесь мы ввели соглашение о том, что имя исходной переменной- отношения, подобное Б' в данном примере, понимается как имя соответствующей переменной-отношения, которая существовала да выполнения рассматриваемой операции обновления. С учетом этого замечания представленное выше ограничение можно интерпретировать так.
Если мы соединим (по номеру поставщика) отношение, которое являлось значением переменной-отношения Б до выполнения обновления с отношением, которое является значением этой переменной-отношения после выполнения обновления, а затем выберем из результата этого соединения все кортежи, в которых старое значение статуса поставщика больше, чем новое, то конечный результат лолжен быть пустым отношением. (Поскольку соединение выполняется по номерам поставщиков, любой полученный в результате выполнения соединения кортеж, для которого значение старого статуса больше, чем новое, должен представлять поставщика, статус которого понизился.) Замечание.
Поскольку ограничение перехода ТКС1 задано лля переменнойатнаисения (применяется к единственной переменной-отношению, в паннам случае — к переменной-отношению поставщиков), оно должно проверяться немедленно. Ниже для сравнения приводится пример ограничения перехода для базы данных (тОбщее количество любых заданных деталей для всех поставщиков может только возрастать"). СОИЯТКА1МТ ТКС2 1Б ВМРЕ ( ( ( БОММАК1ЕЕ БР' РЕК Б' ( И ) АОО ЯОМ ( ОТУ ) АЯ БО' ) 1010 ( БОММАК1ЕЕ БР РЕК Б ( Я$ ) АОО БОМ ( ОТУ ) АБ БО ) ) ЯНЕКЕ Б0' > Б0 ) з~о Часть 11.
Реля ииопная модель Поскольку ограничение перехода ТКС2 задано для базы данных (оно включ две различные переменные-отношения — поставщиков и поставок), его проверка бу. т отложена до момента выполнения оператора СОМИТТ. Здесь имена исходных перемс иыхотношений Б' и БР' используются для обозначения соответственно перемепныхотношений Б и БР в момент до начала выполнения транзакции Для ограничений типов и атрибутов противопоставление ограничений состоя~:я и перехода лишено смысла. 8.8.
Ключи В реляционной модели всегда делался акцент на понятии ключей, хотя, как мы уже видели, на самом деле они являются лишь частным случаем 1хотя и очень важным) некоторого более общего явления. В этом разделе мы вновь обратимся к понятию ключа и рассмотрим его более подробно. Зачвчапие Основная идея понятия ключа достаточно проста, но, к сожалению, имеет место олно существенное затруднение — МБЫ-значения. Возможность того, что, например, для данного внешнего ключа разрешены ХЫЬЬ-значения, существенно усложняет дело.
Однако проблема НЫЬЬ-значений представляет собой отдельную обширную тему для обсуждения и было бы нецелесообразно рассматривать ее в настоящий момент. Поэтому по методическим соображениям в настоящем разделе мы практически не будем обращать внимания на ее существование.
Мы вернемся к ней в главе 13 и рассмотрим проблему ХЫЬЬ-значений в общем случае, в частности рассмотрим, как эти значения влияют на понятие ключа. (На самом деле, по нашему твердому убеждению, понятие Н))ЬЬ-значения является ошибочным и совсем не должно использоваться, но было бы неправильным полностью игнорировать его в подобной книге.) Потенциальные ключи Пусть й — некоторая переменная-отношение. По определению множество всех атрибутов переменной-отношения й обладает свойством уникальности, т е. в любой момент в значении переменной-отношении й никакие два кортежа не дублирую~ друг друга.
На практике же часто некоторое допустимое подмножество множества всех атрибутов переменной-отношения й также обладает подобным свойством уникальности. Например, в переменной-отношении поставщиков Б этим свойством обладает подмножество из одного атрибута БЬ Полобные случаи служат основой интуитивного понимания смысла формального определения патеиииальиаго ключа. ° Пусть К вЂ” множество атрибутов переменной-отношения й, В этом случае множество К будет потенциальным ключом переменной-отношения К тогда и золько тогда, когда оно обладает следующими свойствамиь. а) Уникальность.
Никакие допустимые значения переменной-отношения й не содержат двух различных кортежей с одинаковыми значениями атрибутов множества К. В Обратите викчаиие, чта апределеиие причсплется ииеииа к переченныч-отношениям Аналогичное понятие можно апределипш и длл значений отношения (сл~ 13 Зф по перемеиитеатиашепил представляют более вижиый случай З11 Глава 8. Целостность данных б) Неизбыточность. Никакое из собственных подмножеств множества К не обладает свойством уникальности.
Обратите внимание, что каждая переменная-отношение имеет по крайней мере один потенциальный ключ. Свойство уникальности подобных ключей не требует дополнительных разъяснений. Относительно свойства неизбыточности следует предоставить некоторые пояснения. Суть в том, что если определить "потенциальный ключ", который не будет обладать свойством неизбыточности, системе об этом ничего не будет известно и она не сможет должным образом обеспечить выполнение соответствующего ограничения целостности. Пусть, например, мы определили потенциальный ключ отношения поставщиков не как атрибут Б), а как комбинацию атрибутов (Б),С1ТУ).
Тогда система не сможет соблюдать ограничение, требующее "глобальной*' уникальности номера поставщика; вместо этого в ней будет поддерживаться более слабое ограничение, согласно которому номер поставщика должен быть уникальным в масштабе одного города. По этой причине среди прочих условий требуется, чтобы потенциальные ключи не содержали какие-либо атрибуты, которые не имеют отношения к обеспечению его уникальной идентификациит.
Довольно часто в литературе (включая предыдущие издания этой книги) понятие не- избыточности в указанном выше смысле иначе называется мшсиначьностью. Однако "минимальность" — это не совсем точное выражение, поскольку, когда мы говорим, что потенциальный ключ К1 "минимален", это не означает, что не существует другого потенциального ключа К2 с меньшим количеством атрибутов. Вполне возможно, например, что ключ К1 состоит из четырех атрибутов, а ключ К2 — только нз двух. Поэтому здесь будет использоваться термин "неизбыточность". Для описания потенциального ключа в определении переменной-отношения будем использовать следующий синтаксис языка Тц!оНа! О. КЕТ ( <список имен атрибутовг Ниже приведено несколько примеров.
° ЧАК Я ВАНЕ НЕЖАТ!ОН ( Бз Бе, ЯНАИЕ НАНЕ, ЯТАТОЯ 1ИТЕОЕК, С1ТУ СНАК ) КЕУ ( Я) Замечание. В предыдущей главе мы уже приводили это определение с использованием фразы РК1МАКЧ КЕУ вместо КЕУ. Подробности можно найти в подразделе "Первичные и альтернативные ключи", приведенном ниже в этом разделе. Другой веской причиной, по которой от поп1енцнальных ключей требуется отсутсоиие избыточности, япляется требование их соответствия внешним ключам. Пюбои внешний кзюч, который ссылается на "избыточный" потенциальный ключ 1если бы тикое было возмолсной был бы также "избыточным", и содержаиСая его переменная отношения почпш наверняка нарушала бы принципы дополнительной нормализации (глава ПА З12 Часть 11. Реляционная лсодезть ° ЧАН БР ВАНЕ НЕ1АТ1ОМ ( Яй Я(, Р)) Р(), ОТХ ()ТХ ) КЕХ ( Б(, Р$ ) ...
) В этом примере показана переменная-отношение с составным потенциальным ключом (т.е. с потенциальным ключом, содержащим более одного атрибута). Потенциальный ключ, состоящий из одного атрибута, называется простым. ° ЧАН ЕЬЕМЕМТ ВАНЕ КЕ1АТ1ОМ (МАМЕ МАМЕ, ЯХИВОР СНАМ, АТОМ1СФ 1МТЕЯЕН ) КЕХ ( МАНЕ ) КЕХ ( БХМВОЬ ) КЕХ ( АТОНХС( ) В этом примере показана переменная-отношение с несколькими различными (простыми) потенциальными ключами. ° ЧАН ИАНН1АОЕ ВАНЕ НЕРАТ1ОМ (НРБВЕМР /* Муж */ МАМЕ, И1РЕ /* Жена */ МАНЕ, ПАТЕ /* Дата бракосочетания */ ПАТЕ ) /* Подразумевается, что муж может иметь лишь одну жену, а жена */ /* лишь одного мужа, а также, что каждый из супругов состоит в */ /* браке первмй раз */ .