Ответ
Натуральный ключ — это атрибут или набор атрибутов, которые уникально идентифицируют запись и имеют бизнес-значение (ISBN книги, номер паспорта, email).
Используйте натуральный ключ, когда:
- Существует стабильный, неизменяемый и гарантированно уникальный бизнес-идентификатор. Например, код страны по стандарту ISO (US, RU).
- Ключ простой и атомарный (не составной из многих полей).
- Требуется естественная уникальность для данных. Это упрощает понимание схемы и запросов.
-- Запрос с натуральным ключом интуитивно понятен SELECT * FROM countries WHERE country_code = 'DE'; - Избегаете лишних JOIN. Если ключ является значимым полем, его можно использовать в связанных таблицах без подтягивания описания.
Пример схемы:
CREATE TABLE books (
isbn VARCHAR(13) PRIMARY KEY, -- Натуральный ключ
title VARCHAR(255),
author VARCHAR(255)
);
Риски натурального ключа:
- Изменение значения. Если пользователь меняет email, придётся каскадно обновлять все внешние ключи.
- Сложность. Составные ключи (регион + номер) ухудшают производительность JOIN.
- Неэффективность. Длинные строковые ключи занимают больше места в индексах и во внешних ключах, чем компактные целочисленные surrogate-ключи.