Чем отличается первичный ключ от внешнего ключа?

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

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

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

Первичным ключом могут быть поля отвечающие следующим требованиям:

-две разные строки не могут иметь одно и то же значение первичного ключа;

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

Некоторые СУБД не допускают изменения значения в столбце первичного ключа.

Внешний ключ – это столбец, значения которого должны совпадать с первичным ключом некоторой таблицы. Иными словами, для внешнего ключа доменом является множество значений первичного ключа. Внешний ключ не может принимать значения, не содержащиеся в первичном ключе. Единственно возможное исключение – значение Null (пусто), при котором внешний ключ ни на что не ссылается. Поддержание целостности ключей является задачей СУБД.

Допустимой является ситуация, когда содержащийся в таблице внешний ключ ссылается на первичный ключ той же самой таблицы. Пример: запись с информацией о сотруднике, размещенная в таблице «Сотрудник», имеет атрибут «Начальник», ссылающийся на другую запись в той же самой таблице.

Внешний ключ может быть (или не быть) частью составного первичного ключа в своей таблице.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: