Первичный ключ против уникального ключа
Столбец или набор столбцов, который можно использовать для идентификации или доступа к строке или набору строк в базе данных, называется ключом. Уникальный ключ - это ключ, который может однозначно идентифицировать строку в таблице в контексте реляционных баз данных. Уникальный ключ состоит из одного столбца или набора столбцов. Первичный ключ также представляет собой комбинацию столбцов в таблице, которые однозначно идентифицируют строку. Но это считается частным случаем уникального ключа.
Что такое уникальный ключ?
Как упоминалось ранее, уникальный ключ - это один столбец или набор столбцов, которые могут однозначно идентифицировать строку в таблице. Таким образом, уникальный ключ ограничен таким образом, что никакие два его значения не равны. Одним из важных свойств является то, что уникальные ключи не применяют ограничение NOT NULL. Поскольку NULL представляет отсутствие значения, если две строки имеют NULL в столбце, это не означает, что значения равны. Столбец, определенный как уникальный ключ, допускает только одно значение NULL в этом столбце. Затем это можно использовать для уникальной идентификации этой конкретной строки. Например, в таблице, содержащей информацию о студентах, идентификатор студента можно определить как уникальный ключ. Поскольку никакие два студента не могут иметь одинаковый идентификатор, он однозначно идентифицирует одного студента. Таким образом, столбец идентификатора студента удовлетворяет всем свойствам уникального ключа. В зависимости от структуры базы данных таблица может иметь более одного уникального ключа.
Что такое первичный ключ?
Первичный ключ также является столбцом или комбинацией столбцов, которые однозначно определяют строку в таблице реляционной базы данных. Таблица может иметь не более одного первичного ключа. Первичный ключ применяет неявное ограничение NOT NULL. Таким образом, столбец, определенный как первичный ключ, не может иметь в нем значений NULL. Первичный ключ может быть обычным атрибутом в таблице, который гарантированно будет уникальным, например, номер социального страхования, или уникальным значением, сгенерированным системой управления базой данных, например глобальным уникальным идентификатором (GUID) в Microsoft SQL Server. Первичные ключи определяются через ограничение PRIMARY KEY в стандарте ANSI SQL. Первичный ключ также можно определить при создании таблицы. SQL позволяет составлять первичный ключ из одного или нескольких столбцов, и каждый столбец, включенный в первичный ключ, неявно определяется как NOT NULL. Но некоторые системы управления базами данных требуют, чтобы столбцы первичного ключа были явно НЕ NULL.
Разница между первичным ключом и уникальным ключом
Несмотря на то, что и первичный ключ, и уникальный ключ представляют собой один или несколько столбцов, которые могут однозначно идентифицировать строку в таблице, они имеют некоторые важные отличия. Самое главное, таблица может иметь только один первичный ключ, но может иметь более одного уникального ключа. Первичный ключ можно рассматривать как частный случай уникального ключа. Еще одно отличие состоит в том, что первичные ключи имеют неявное ограничение NOT NULL, в то время как уникальный ключ не имеет этого ограничения. Таким образом, уникальные ключевые столбцы могут содержать или не содержать значения NULL, но столбцы первичного ключа не могут содержать значения NULL.