Есть еще несколько различий между Первичным и Кандидатным ключом, которые я расскажу с помощью сравнительной таблицы, показанной ниже.
Сравнительная таблица
Основа для сравнения | Основной ключ | Ключ-кандидат |
---|---|---|
основной | В любом отношении может быть только один первичный ключ. | В отношении может быть более одного ключа-кандидата. |
НОЛЬ | Ни один атрибут первичного ключа не может содержать значение NULL. | Атрибут ключа-кандидата может иметь значение NULL. |
Уточнить | Необязательно указывать первичный ключ для любого отношения. | Не может быть отношения без указанного ключа-кандидата. |
Особенность | Первичный ключ описывает наиболее важный атрибут для отношения. | Ключи-кандидаты представляют кандидатов, которые могут претендовать на Первичный ключ. |
Наоборот | Первичный ключ - это ключ-кандидат. | Но это не обязательно, что каждый ключ-кандидат может быть первичным ключом. |
Определение первичного ключа
Первичный ключ - это атрибут или набор атрибутов, которые однозначно идентифицируют каждый кортеж в отношении. Для каждого отношения может быть только один первичный ключ. Необходимо позаботиться о том, чтобы первичный ключ никогда не содержал значение NULL, и он должен иметь уникальное значение для каждого кортежа в отношении. Значения атрибута (ов) первичного ключа должны быть статическими, т. Е. Значение атрибута не должно изменяться никогда или редко.
Один из ключей-кандидатов получает право стать первичным ключом. Правила, по которым ключ-кандидат должен соответствовать первичным, заключаются в том, что значение ключа никогда не должно быть NULL и оно должно быть уникальным для всех кортежей.
Если отношение содержит атрибут, который является первичным ключом некоторого другого отношения, то этот атрибут называется внешним ключом .
Рекомендуется выяснить первичный ключ отношения, прежде чем вводить другие атрибуты отношения, так как первичный ключ уникально идентифицирует каждый кортеж. Лучше выбрать один атрибут или небольшое количество атрибутов в качестве первичного ключа, что облегчает обработку отношений.
Теперь давайте посмотрим пример первичного ключа.
Студент {ID, Имя, Фамилия, Возраст, Адрес}
Здесь мы сначала выясним ключи-кандидаты. Я выяснил два ключа-кандидата {ID} и {First_name, Last_name}, поскольку они будут однозначно идентифицировать каждого учащегося в отношении ученика. Теперь здесь я выберу ID в качестве своего первичного ключа, потому что иногда может случиться, что у двух учеников могут быть одинаковые имена и фамилии, поэтому будет легко отследить ученика по его идентификатору .
Определение ключа кандидата
Ключ-кандидат - это атрибут или набор атрибутов, которые однозначно определяют кортеж в отношении. В отношении может быть более одного ключа-кандидата. Эти ключи-кандидаты являются кандидатами, которые могут претендовать на первичный ключ.
Хотя каждый ключ-кандидат может стать первичным ключом, в качестве первичного ключа может быть выбран только один. Правила, которым ключ-кандидат должен стать первичным ключом, - это значение атрибута ключа, которое никогда не может быть NULL в каком-либо домене ключа, оно должно быть уникальным и статичным .
Если все ключи-кандидаты соответствуют первичному ключу, то опытный администратор БД должен принять решение, чтобы выяснить первичный ключ. Не может быть отношения без ключа-кандидата.
Давайте разберем ключ кандидата с примером. Если мы добавим еще некоторые атрибуты в студенческие отношения, я обсуждал выше.
Студент {ID, Имя, Фамилия, Возраст, Адрес, DOB, Фамилия}
Здесь я могу найти два возможных ключа: {ID}, {First_name, Last_name, DOB} . Таким образом, вы можете понять, что ключи-кандидаты однозначно идентифицируют кортеж в отношении.
Ключевые различия между первичным и кандидатским ключом
- Основной момент, который отличает первичный ключ от ключа-кандидата, заключается в том, что для любой связи в схеме может быть только один первичный ключ. Однако может быть несколько ключей-кандидатов для одного отношения.
- Атрибут в первичном ключе никогда не может содержать значение NULL, так как основная функция первичного ключа заключается в уникальной идентификации записи в отношении. Даже первичный ключ может использоваться в качестве внешнего ключа в другом отношении, и, следовательно, он не должен быть NULL, чтобы ссылочное отношение могло найти кортежи в ссылочном отношении. Ключ-кандидат может иметь значение NULL, если не указано ограничение атрибута, а не NULL.
- Необязательно указывать первичный ключ, но не может быть отношения без ключей-кандидатов.
- Первичный ключ описывает уникальный и наиболее важный атрибут отношения, тогда как ключи-кандидаты предоставляют кандидатов, среди которых можно выбрать один из них в качестве первичного ключа.
- Каждый первичный ключ является ключом-кандидатом, но, наоборот, не соответствует действительности.
Заключение:
Для отношения необязательно указывать первичный ключ. С другой стороны, если вы объявляете отношение, в этом отношении должны присутствовать ключи-кандидаты, чтобы построить хорошее отношение.