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.