Потенциальный ключ
- 1 year ago
- 0
- 0
Потенциальный ключ ( англ. candidate key , также в русскоязычных источниках используется термин возможный ключ ) — в реляционной модели данных — подмножество атрибутов отношения , удовлетворяющее требованиям уникальности и несократимости ( минимальности ) :
Кристофер Дейт отмечает, что, хотя свойство несократимости в литературе часто обозначается термином минимальность , последний термин является не вполне подходящим, поскольку может навести кого-либо на мысль о том, что из нескольких потенциальных ключей минимальным является ключ с наименьшим количеством атрибутов. Поэтому Дейт предпочитает термин несократимость .
Потенциальный ключ отличается от суперключа тем, что на суперключ накладывается только требование уникальности, но не накладывается требование минимальности (несократимости). Таким образом, любой потенциальный ключ является суперключом.
Система баз данных не способна самостоятельно определять потенциальные ключи, это может делать только проектировщик базы данных, исходя из знаний о предметной области . Проектировщик должен выявлять и явно определять все потенциальные ключи, поскольку в результате такого объявления система управления базами данных получает информацию, которую в дальнейшем использует для проверки данных на корректность. Таким образом, определение потенциального ключа является ограничением целостности .
Поскольку все кортежи в отношении по определению уникальны, в нём всегда существует хотя бы один потенциальный ключ (например, включающий все атрибуты отношения) .
В отношении может быть одновременно несколько потенциальных ключей. Один из них может быть выбран в качестве первичного ключа отношения, тогда другие потенциальные ключи называют альтернативными ключами' .
Теоретически, все потенциальные ключи равно пригодны в качестве первичного ключа, на практике в качестве первичного обычно выбирается тот из потенциальных ключей, который имеет меньший размер (физического хранения) и/или включает меньшее количество атрибутов. Как указывал Э. Кодд , «обычно основанием [для выбора первичного ключа] является упрощение работы, но этот аспект выходит за рамки реляционной модели» .
В языке SQL альтернативный ключ задаётся как ограничение уникальности (UNIQUE CONSTRAINT), и существует разница между первичным и альтернативными ключами. В первичный ключ не могут быть включены «необязательные» столбцы, то есть столбцы без ограничения NOT NULL. Однако ограничение уникальности может быть задано для столбцов, которые допускают значения NULL, и в этом случае строки, содержащие NULL в таких столбцах, могут фактически не быть уникальными. В разных реализациях допускается или запрещается наличие нескольких строк с идентичными комбинациями пустых и непустых значений в альтернативном ключе .