Введение в системы БД (542480), страница 75
Текст из файла (страница 75)
КЕХ ( НРБВЕМР, РАТЕ ) КЕХ ( ПАТЕ, И1РЕ ] КЕХ ( ИТРЕ, НОЯВЕМР ) В этом примере показана переменная-отношение с несколькими различными составными (и перекрывающимися) потенциальными ключами. Конечно, как указывалось в разделе 8,4, определение потенциального ключа, по существу, представляет собой просто сокращенную запись определенного ограничения переменной-отношения, Эта сокращенная запись весьма удобна, поскольку понятие потенциального ключа очень важно с практической точки зрения. Говоря конкретнее, в реляционной модели потенциальные ключи обеспечивают основной механизм адресации на уровне кортежей. Это утверждение означает, что единственный гарантируемый системой способ точно указать на какой-то конкретный кортеж состоит в указании значения одного из его потенциальных ключей. Например, с помощью приведенного ниже выражения гарантированно будет получено не более одного кортежа (точнее, будет получено отношение, состоящее не более чем из одного кортежа).
Б ИНЕНЕ Б) = Б( ( 'БЗ' ) В противоположность этому при задании следующего выражения в общем случае будет получено количество кортежей, которое нельзя предсказать заранее. Я ИНЕНЕ С1ТХ = 'Раг(в' Глава 8. Целостность данных З1З Таким образом, потенциазьные ключи имеют такое эюе фундаментальное значение для успешной работы реляционной системы, как адресация основной памяти для успешной работы машины, на которой эта система установлена. В качестве выводов из этого утверждения можно привести следующее. 1. "Переменные-отношения", которые не имеют потенциальных ключей (т.е.
"переменные-отношения", допускающие дублирование кортежей), при определенных обстоятельствах способны вызвать нетипичное или аномальное поведение системы. 2. Система, которая не имеет сведений о потенциальных ключах, в некоторых случаях будет демонстрировать поведение, отличное от "действительно реляционного", даже если используемые в ней переменные-отношения являются истинными переменными-отношениями и не допускают дублирования кортежей. Упомянутое выше "нетипичное или аномальное" либо "отличное от типично реляционного" поведение чаще всего будет связано с такими процессами, как обнокзение представлений и оптимизация (подробности приводятся в главах 9 и 17 соответственно).
Прежде чем завершить этот подраздел, укажем на некоторые особенности потенциальных ключей. ° Надмножество потенциального ключа является суперключом. Например, множество атрибутов (Б$,01Тз) — это суперключ переменной-отношения Б. Суперключ обладает свойством уникальности, но необязательно — свойством не- избыточности (поэтому потенциальный ключ, естественно, является частным случаем суперключа). ° Если множество БК является суперключом переменной-отношения К и А — это атрибут переменной-отношения К, то функциональная зависимость БК вЂ” з А в переменной-отношении й является истинной (эта важная концепция подробно будет обсуждаться в главе! 0).
Фактически суперключ можно опредезить как подмножество БК, состоящее из таких атрибутов переменной-отношения й, что функциональная зависимость БК вЂ” з й является истинной для всех атрибутов й переменной-отношения й. ° И наконец, обратите внимание на то, что логическое понятие потенциального ключа не следует путать с физическим понятием "уникального индекса", хотя последний часто используется для реачизации потенциальных ключей. Другими словами, для потенциального ключа вовсе не обязательно должен существовать индекс (или другой специальный физический путь доступа, ведущий к отдельным значениям этого ключа).
Конечно, на практике такой специальный путь доступа, возможно, будет существовать, но вопрос о том, существует ли он, выходит за рамки реляционной модели как таковой. Первичные и альтернативные ключи Как мы уже убедились, некоторые переменные-отношения вполне могут иметь несколько потенциальных ключей.
В таком случае в реляционной модели по традиции (по крайней мере, в случае базовой переменной-отношения) один из потенциальных ключей должен быть выбран в качестве первичного ключа, а все остальные потенциальные 314 Часть 11. Реляционная лзодель ключи будут называться альтернативными. В приведенном выше в этой главе примере с переменной-отношением ЕЬЕМЕМТ в качестве первичного ключа можно выбрать атрибут обозначения элемента (ЯУИЕОЕ); тогда атрибут названия элемента (ИЛИЕ) и атрибут атомного числа элемента (вТОИ1С$) будут альтернативными ключами. В том случае, когда в базовой переменной-отношении существует только один потенциальный ключ, согласно реляционной модели (опять же, традиционно) именно он должен быть выбран в качестве ее первичного ключа.
Следовательно, каждая базовая переменная-отношение всегда должна иметь первичный ключ. Выбор одного потенциачьного ключа (если есть из чего выбирать) в качестве первичного, определенно, желателен во многих случаях (даже в большинстве случаев), но это ие означает, что во всех случаях. Аргументы в пользу этой точки зрения приведены в (8,13). Здесь же мы просто отметим, что если есть несколько потенциальных ключей, то не имеет существенного значения, какой из них будет выбран в качестве первичного. Приведем цитату из работы Кодда [8.8); "Обычно обоснования (выбора ключа) достаточно просты, однако этот вопрос выходит за рамки реляционной модели". Что касается наших собственных примеров, иногда мы первичный ключ определяем, а иногда не определяем (но мы всегда будем, конечно, определять хотя бы один иошеникачьный ключ).
Внешние ключи Если не придерживаться формальностей, то внешний ключ можно определить как множество атрибутов одной переменной-отношения 82, значения которых должны совпадать со значениями некоторого потенциального ключа некоторой другой переменной- отношения 81. Например, рассмотрим множество атрибутов (Я( ) (состоящее из одного атрибута) переменной-отношения ЯР. Ясно, что каждое значение множества (Я$) должно быть допустимым для переменной-отношения ЯР лишь в том случае, если такое же значение присутствует в качестве значения единственного потенциального ключа (Я() для переменной-отношения Я (не имеет смысла описывать поставку несуществующего поставщика).
Аналогично заданное значение множества атрибутов (Р1) переменной-отношения ЯР будет допустимым лишь в том случае, если существует такое же значение единственного потенциального ключа (Р$) переменной-отношения Р (неаозможно поставить несуществующую деталь). Эти примеры послужат нам обоснованием следующего определения. ° Пусть )12 — некоторая переменная-отношение. Тогда внешний ключ (скажем, РК) в переменной-отношении 82 представляет собой множество атрибутов этой переменной-отношения, такое, что: а) существует переменная-отношение 81 (причем переменные-отношения 81 и 82 необязательно различны) с потенциальным ключом СК; б) каждое значение внешнего ключа РК в текущем значении переменной- отношения Е2 обязательно совпадает со значением ключа СК некоторого кортежа в текущем значении переменной-отношения 81.
Данное определение нуждается в дополнительных пояснениях. 1. По определению каждое значение данного внешнего ключа должно присутствовать в качестве значения соответствующего ему потенциального ключа (который обычно, но не всегда, является первичным ключом). Однако заметьте, что обратное ус- Глава 8. Целостность данных 315 ловие не требуется, т.е. потенциальный ключ, соответствующий данному внешнему ключу, может содержать значение, которое в данный момент не является значением этого внешнего ключа. Например, в случае базы данных поставщиков и деталей гпример возможных значений показан на рис. 3.3) поставщик с номером 'Б5' есть в переменной-отношении Б, но его нет в переменной-отношении БР, поскольку этот поставщик в данный момент не поставляет никаких деталей. 2.
Некоторый внешний ключ будет составным или простым в зависимости от того, является ли простым или составным соответствующий потенциальный ключ. 3. Каждый входящий в некоторый внешний ключ атрибут должен иметь то же имя и тип, что и эквивалентный ему компонент соответствующего потенциального ключа. 4. Терминология. Значение внешнего ключа представляет ссылку на кортеж, содержащий соответствующее значение потенциального ключа 1ссылочный кортеж). Поэтому проблема кон~роля того, чтобы база данных не включала никаких неверных значений внешних ключей, известна как проблема поддержания ссылочной целостности.
Ограничение, в соответствии с которым значения данного внешнего ключа должны отвечать значениям соответствующих потенциальных ключей, называют ссылочиым ограничением. Переменная-отношение, которая содержит внешний ключ, называется ссылающейся переменной отношения, а переменная- отношение, которая содержит соответствующий потенциальный ключ, — ссылочиой переменной-отношением. 5. Ссылочные диаграимы.