Рекомендуем, 2020

Выбор редакции

Разница между первичным и кандидатским ключом

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

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

Сравнительная таблица

Основа для сравненияОсновной ключКлюч-кандидат
основнойВ любом отношении может быть только один первичный ключ.В отношении может быть более одного ключа-кандидата.
НОЛЬНи один атрибут первичного ключа не может содержать значение NULL.Атрибут ключа-кандидата может иметь значение NULL.
УточнитьНеобязательно указывать первичный ключ для любого отношения.Не может быть отношения без указанного ключа-кандидата.
ОсобенностьПервичный ключ описывает наиболее важный атрибут для отношения.Ключи-кандидаты представляют кандидатов, которые могут претендовать на Первичный ключ.
НаоборотПервичный ключ - это ключ-кандидат.Но это не обязательно, что каждый ключ-кандидат может быть первичным ключом.

Определение первичного ключа

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

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

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

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

Теперь давайте посмотрим пример первичного ключа.

 Студент {ID, Имя, Фамилия, Возраст, Адрес} 

Здесь мы сначала выясним ключи-кандидаты. Я выяснил два ключа-кандидата {ID} и {First_name, Last_name}, поскольку они будут однозначно идентифицировать каждого учащегося в отношении ученика. Теперь здесь я выберу ID в качестве своего первичного ключа, потому что иногда может случиться, что у двух учеников могут быть одинаковые имена и фамилии, поэтому будет легко отследить ученика по его идентификатору .

Определение ключа кандидата

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

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

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

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

 Студент {ID, Имя, Фамилия, Возраст, Адрес, DOB, Фамилия} 

Здесь я могу найти два возможных ключа: {ID}, {First_name, Last_name, DOB} . Таким образом, вы можете понять, что ключи-кандидаты однозначно идентифицируют кортеж в отношении.

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

  1. Основной момент, который отличает первичный ключ от ключа-кандидата, заключается в том, что для любой связи в схеме может быть только один первичный ключ. Однако может быть несколько ключей-кандидатов для одного отношения.
  2. Атрибут в первичном ключе никогда не может содержать значение NULL, так как основная функция первичного ключа заключается в уникальной идентификации записи в отношении. Даже первичный ключ может использоваться в качестве внешнего ключа в другом отношении, и, следовательно, он не должен быть NULL, чтобы ссылочное отношение могло найти кортежи в ссылочном отношении. Ключ-кандидат может иметь значение NULL, если не указано ограничение атрибута, а не NULL.
  3. Необязательно указывать первичный ключ, но не может быть отношения без ключей-кандидатов.
  4. Первичный ключ описывает уникальный и наиболее важный атрибут отношения, тогда как ключи-кандидаты предоставляют кандидатов, среди которых можно выбрать один из них в качестве первичного ключа.
  5. Каждый первичный ключ является ключом-кандидатом, но, наоборот, не соответствует действительности.

Заключение:

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

Top