В каких случаях не стоит указывать Primary Key

«В каких случаях не стоит указывать Primary Key» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Отсутствие Primary Key (PK) может быть оправдано в нескольких сценариях:

  1. Логи таблиц – если данные только добавляются и никогда не обновляются/удаляются, PK может быть избыточным.
  2. Временные таблицы – например, для промежуточных вычислений в хранимых процедурах.
  3. Таблицы-связки в many-to-many – иногда составной PK (из двух внешних ключей) заменяют на индекс без явного PK.
  4. Высоконагруженные вставки – PK может создавать contention в distributed системах (например, в Cassandra).

Пример таблицы без PK для логов:

CREATE TABLE server_logs (
    timestamp TIMESTAMP,
    message TEXT,
    severity VARCHAR(10)
);
-- Вместо PK — индекс по времени для поиска
CREATE INDEX idx_logs_time ON server_logs(timestamp);

⚠️ Но в 95% случаев PK нужен – он гарантирует целостность данных и ускоряет запросы.