Gymterview
junior

Какие отличия между ограничениями PRIMARY и UNIQUE?

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

Характеристика PRIMARY KEY UNIQUE
Количество на таблицу Только один Можно несколько
NULL-значения Не допускает Допускает (обычно одно, в PostgreSQL — несколько)
Тип индекса (по умолчанию) Кластерный (SQL Server) Некластерный
Семантика Основной идентификатор записи Дополнительное ограничение уникальности

В PostgreSQL PRIMARY KEY автоматически создаёт B-tree индекс и подразумевает NOT NULL. UNIQUE также создаёт B-tree индекс, но допускает множественные NULL-значения (поскольку NULL != NULL). В SQL Server ограничение UNIQUE допускает только один NULL.

На практике PRIMARY KEY определяет основной способ идентификации записи (например, id), а UNIQUE используется для бизнес-ключей (например, email, passport_number), которые тоже должны быть уникальными.

На собеседовании: ключевые отличия — количество (один PK vs много UNIQUE), обработка NULL и тип индекса. Частая ошибка — не упомянуть, что PRIMARY KEY подразумевает NOT NULL.