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

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


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

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

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

Упомянутое выше нетипичное или аномальное либо отличное от типично реляционного поведение чаще всего будет связано с такими процессами, как обновление представлений и оптимиза11ия (подробности приводятся в главах 9 и 17 соответственно).

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

Надмножество потенциального ключа является суперключом. Например, множество атрибутов {Sl,CITY}- это суперключ переменной-отношения S. Суперключ обладает свойством уникальности, но необязательно - свойством неизбыточности (поэтому потенциальный ключ, естественно, является частным случаем суперключа).

Если множество SK является суперключом переменной-отношения R и А - это атрибут переменной-отношения R, то функциональная зависимость SK -> А в переменной-отношении R является истинной (эта важная концепция подробно будет обсуждаться в главе 10). Фактически суперключ можно определить как подмножество SK, состоящее из таких атрибутов переменной-отношения R, что функциональная зависимость SK А является истинной для всех атрибутов А переменной-отношения R.

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

Первичные и альтернативные ключи

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



ключи будут называться альтернативными. В приведенном выше в этой главе примере с переменной-отношением ELEMENT в качестве первичного ключа можно выбрать атрибут обозначения элемента {SYMBOL}; тогда атрибут названия элемента {NAME} и атрибут атомного числа элемента {ATOMICI} будут альтернативными ключами. В том случае, когда в базовой переменной-отношении сушествует только один потенциальный ключ, согласно реляционной модели (опять же, традиционно) именно он должен быть выбран в качестве ее первичного ключа. Следовательно, каждая базовая переменная-отношение всегда должна иметь первичный ключ.

Выбор одного потенциального ключа (если есть из чего выбирать) в качестве первичного, определенно, желателен во многих случаях (даже в большинстве случаев), но это не означает, что во всех случаях. Аргументы в пользу этой точки зрения приведены в [8.13]. Здесь же мы просто отметим, что если есть несколько потенциальных ключей, то не имеет сушественного значения, какой из них будет выбран в качестве первичного. Приведем цитату из работы Кодда [8.8]: Обычно обоснования [выбора ключа] достаточно просты, однако этот вопрос выходит за рамки реляционной модели . Что касается наших собственных примеров, иногда мы первичный ключ определяем, а иногда не определяем (но мы всегда будем, конечно, определять хотя бы один потенциачьный ключ).

Внешние ключи

Если не придерживаться формальностей, то внешний ключ можно определить как множество атрибутов одной переменной-отношения R2, значения которых должны совпадать со значениями некоторого потенциального ключа некоторой другой переменной-отношения R1. Например, рассмотрим множество атрибутов {SI} (состояшее из одного атрибута) переменной-отношения SP. Ясно, что каждое значение множества {SI} должно быть допустимым для переменной-отношения SP лишь в том случае, если такое же значение присутствует в качестве значения единственного потенциального ключа {SI} для переменной-отношения S (не имеет смысла описывать поставку несуществуюшего поставши-ка). Аналогично заданное значение множества атрибутов {Р} переменной-отношения SP будет допустимым лишь в том случае, если существует такое же значение единственного потенциального ключа {Р} переменной-отношения Р (невозможно поставить несуществующую деталь). Эти примеры послужат нам обоснованием следующего определения.

Пусть R2- некоторая переменная-отношение. Тогда внешний ключ (скажем, FK) в переменной-отношении R2 представляет собой множество атрибутов этой переменной-отношения, такое, что:

а) существует переменная-отношение R1 (причем переменные-отношения R1 и R2 необязательно различны) с потенциальным ключом СК;

б) каждое значение внешнего ключа FK в текущем значении переменной-отношения R2 обязательно совпадает со значением ключа СК некоторого кортежа в текущем значении переменной-отношения R1.

Данное определение нуждается в дополнительных пояснениях.

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



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

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

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

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

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

S <(- SP -> Р

Здесь каждая стрелка обозначает внешний ключ в той переменной-отношении, из которой стрелка выходит. Этот внешний ключ ссылается на некоторый потенциальный ключ той переменной-отношения, на который данная стрелка указывает.

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

St Pt

S <- SP -> P

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

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

R3 -> R2 -> R1

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



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

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