Ключ кандидата - Candidate key

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

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

Ключи-кандидаты также по-разному называются первичными ключами, вторичными ключами или альтернативными ключами.

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

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

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

Пример

Определение ключей-кандидатов можно проиллюстрировать следующим (абстрактным) примером. Рассмотрим переменную отношения (relvar ) р с атрибутами (А, B, C, D), который имеет только следующие два допустимых значения r1 и r2:

r1
АBCD
а1b1c1d1
а1Би 2c2d1
а2b1c2d1
r2
АBCD
а1b1c1d1
а1Би 2c2d1
а1b1c2d2

Здесь r2 отличается от r1 только в А и D значения последнего кортежа.

За r1 следующие наборы обладают свойством уникальности, т. е. в экземпляре нет двух отдельных кортежей с одинаковыми значениями атрибутов в наборе:

{A, B}, {A, C}, {B, C}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D}

За r2 свойство единственности имеет место для следующих множеств;

{B, C}, {B, D}, {C, D}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D}

Поскольку суперключи относительной переменной - это те наборы атрибутов, которые имеют свойство уникальности для все допустимые значения этой relvar и поскольку мы предполагаем, что r1 и r2 все юридические ценности, которые р можно взять, можно определить набор суперключей р взяв пересечение двух списков:

{B, C}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D}

Наконец, нам нужно выбрать те наборы, для которых нет правильное подмножество в списке, которые в данном случае:

{B, C}, {A, B, D}, {A, C, D}

Это действительно ключи-кандидаты relvar р.

Мы должны учитывать все отношения, которые могут быть присвоены relvar, чтобы определить, является ли определенный набор атрибутов ключом-кандидатом. Например, если бы мы рассматривали только r1 тогда мы бы пришли к выводу, что {A, B} - это ключ-кандидат, что неверно. Однако мы мог бы быть в состоянии заключить из такого отношения, что определенное множество нет ключ-кандидат, потому что этот набор не имеет свойства уникальности (пример {A, D} для r1). Обратите внимание, что существование подходящего подмножества набора, обладающего свойством уникальности не можешь в целом может использоваться как свидетельство того, что надмножество не является потенциальным ключом. В частности, обратите внимание, что в случае пустого отношения каждое подмножество заголовка имеет свойство уникальности, включая пустой набор.

Определение ключей-кандидатов

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

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

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

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

Следующий алгоритм фактически работает за полиномиальное время по количеству ключей-кандидатов и функциональным зависимостям:[1]

 function find_candidate_keys (A, F) / * A - это набор всех атрибутов, а F - это набор функциональных зависимостей * / K [0]: = minim (A); n: = 1; / * Количество ключей, известных на данный момент * / i: = 0; / * Текущий обрабатываемый ключ * / while i 

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

Смотрите также

Рекомендации

  1. ^ Л. Луччези, Клаудио; Осборн, Сильвия Л. (октябрь 1978 г.). «Ключи-кандидаты в отношения». Журнал компьютерных и системных наук. 17 (2): 270–279. Дои:10.1016/0022-0000(78)90009-0.

внешняя ссылка