Почему в качестве первичного ключа обычно предпочитают суррогатный ключ, а не естественный?
- Почему не использовать email как первичный ключ?
Бизнес-значения меняются (email, телефон, номер паспорта), а идентичность записи меняться не должна. Суррогатный ключ (bigint identity, UUIDv7) разделяет эти вещи.
- Смена естественного ключа — каскадное обновление всех ссылок
- Естественный ключ может быть длинным, составным и не всегда известен
- Бизнес-уникальность — отдельным UNIQUE
А ещё Естественный ключ уместен для неизменных кодов: ISO-код валюты, страны
Подробно
Классические примеры: email и телефон пользователь меняет, номер документа переоформляют, а страна может сменить код. Каждое такое изменение при естественном ключе означает каскадное обновление всех внешних ключей. Суррогатный ключ лишён смысла и потому стабилен. Важная оговорка: он не отменяет уникальность бизнес-данных — на email всё равно нужен уникальный индекс, иначе появятся дубли. При выборе типа стоит помнить о компромиссе: последовательное целое компактно и дружелюбно к индексу, случайный UUID удобен для генерации на стороне клиента и слияния данных, но ухудшает локальность вставки в B-tree; частично это лечат упорядоченными по времени вариантами UUID.
Что хотят услышать
- Почему естественные ключи нестабильны.
- Суррогатный ключ плюс UNIQUE на бизнес-поля.
- Когда естественный ключ допустим.
Частые ошибки
- Считать, что суррогатный ключ снимает необходимость в уникальных ограничениях.
- Брать случайный UUID первичным ключом в больших таблицах, не подумав о фрагментации индекса.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗СУБД не поддерживают текстовые первичные ключи
- ✗Суррогатный ключ сам гарантирует уникальность бизнес-данных
- ✓Естественные атрибуты меняются, а смена PK тянет обновление всех ссылок
- ✗Естественные ключи занимают больше места в любом случае
Что спросят дальше
- Чем плох случайный UUID как кластерный ключ?
- Когда естественный ключ всё-таки уместен?
Разбор темы
- Моделирование данных и целостность
Ключи и constraints, нормальные формы простыми словами, осознанная денормализация и каскадные действия.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.