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

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

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

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

Определение потенциального ключа:

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

1) Свойство уникальности: нет двух различных кортежей в текущем значении переменной R с одинаковыми значениями K

2) Свойство не избыточности: никакое из подмножеств K не обладает свойством уникальности.

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

Пример: дана БД элементов таблицы Менделеева: порядковый номер элемента, атомная масса, название элемента и т.д. – все это потенциальные ключи.

Потенциальный ключ – множество (атрибутов).

Потенциальный ключ из 1-го атрибута – это простой ключ.

Потенциальный ключ из нескольких атрибутов – это составной ключ.

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

 

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

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

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

Замечания:

- внешний ключ – это множество (вводят через {}), но если внешний ключ простой, то скобки могут опускаться;

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

Пример: цвет автомобиля в таблице Auto это указатель на значение цвета, который храниться в таблице menu.

В теории реляционных баз данных требуется:

- Если внешний ключ составной, то соответствующий потенциальный ключ тоже составной. Если внешний ключ простой, то потенциальный ключ тоже простой.

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

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

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

- Ссылочные ограничения представляются ссылочными диаграммами. Иногда над стрелкой пишут внешний ключ.

C_COLOR

AUTO ® MENU

- Отношение (R2) может быть одновременно и ссылочным и ссылающимся

R3® R2®R1

- Отношение может ссылаться само на себя

R1® R1

Пример: Список сотрудников, у которых есть атрибут – код сотрудника, которому данный сотрудник подчиняется

- Ссылки могут образовывать цикл (ссылочный цикл)

Rn ® Rn-1 … R1 ® Rn

Заметим, что атрибут(ы) становится внешним ключом, если имеется отношение с соответствующим ему потенциальным ключом.