Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpant / шпант / 18-23.doc
Скачиваний:
17
Добавлен:
15.04.2015
Размер:
675.84 Кб
Скачать

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

  • Базовое отношение может иметь больше одного потенциального ключа.

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

Пример. В отношении ELEMENTS, можно выбрать "обозначение элемента" в качестве первичного ключа, тогда "название элемента" и "атомное число” будут альтернативными ключами.

22. Внешние ключи. Определение и свойства. Синтаксис для указания внешнего ключа. Ссылочная целостность.

  • Определение термина "внешний ключ".

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

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

  • каждое значение FK в текущем значении R2 всегда совпадает со значением СК некоторого кортежа в текущем значении R1.

Пояснения к определению.

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

Пример. В отношении SP базы данных поставщиков и деталей внешние ключи, строго говоря, — это {S#} и {Р#}, а не S# и Р#. Однако в неформальном контексте скобки обычно опускают, если это множество содержит только один атрибут.

  • По определению каждое значение данного внешнего ключа должно являться значением соответствующего потенциального ключа.

Обратное не требуется.

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

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

  • Пример (определение базы данных отделов и сотрудников):

  • В этой базе данных атрибут DEPТ# отношения ЕМР является внешним ключом, соответствующим первичному ключу DEPT# отношения DEPT; однако он, ко­нечно, не является компонентом первичного ключа ЕМР# (и никакого другого потенциального ключа) отношения ЕМР.

  • Терминология.

  • Значение внешнего ключа представлено ссылкой к кортежу, содержащему соответствующее значение потенциального ключа.

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

  • Отношение, которое содержит внешний ключ, называется ссылающимся отношением, а отношение, которое содержит соответствующий потенциальный ключ, — ссылочным отношением или целевым отношением (target relation).

  • Ссылочные диаграммы.

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

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

  • «Ссылочный путь".

Пусть отношения Rn, R(n-1), ..., R2, R1 такие, что имеется ссылочное ограничение из Rn в R(n-1), ссылочное ограничение из R(n-1) в R(n-2), ... и ссылочное ограничение из R2 в R1:

Rn R(n-l) R(n-2) ... R2 Rl.

Тогда цепочка стрелок из Rn в R1 представляет ссылочный путь из Rn в R1.

  • Отношения R1 и R2 в определении внешних ключей не обязательно различны. В качестве примера рассмотрим следующее отношение:

Здесь ЕМР# — первичный ключ, a MGR_EMP# — внешний ключ, который ссылается на этот первичный. Такие отношения иногда называют самоссылающимися.

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

  • Ссылочный цикл существует, если есть ссылочный путь из некоторого отношения Rn к себе:

Rn R(n-l) R(n-2) ... R2 Rl Rn

Синтаксис для указания внешнего ключа

FOREIGN KEY ( element-commalist ) REFERENCES base-relation

  • Оператор create base relation может включать нуль или более определений внешних ключей

  • Синтаксис категории element здесь представлен или именем атрибута базового отношения, содержащего его (обычный случай), или выражением вида:

RENAME attribute AS attribute

  • Первый параметр attribute является именем атрибута содержащего его отношения, а второй параметр attribute представляет собой новое имя для такого атрибута, который реально заменяет первое имя при работе с данным внешним ключом

  • Полное множество имен атрибутов для внешнего ключа должно совпадать с множеством имен атрибутов для некоторого потенциального ключа базового отношения, указанного после оператора REFERENCES.

Соседние файлы в папке шпант