Ответ
Отсутствие Primary Key (PK) может быть оправдано в нескольких сценариях:
- Логи таблиц – если данные только добавляются и никогда не обновляются/удаляются, PK может быть избыточным.
- Временные таблицы – например, для промежуточных вычислений в хранимых процедурах.
- Таблицы-связки в many-to-many – иногда составной PK (из двух внешних ключей) заменяют на индекс без явного PK.
- Высоконагруженные вставки – 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 нужен – он гарантирует целостность данных и ускоряет запросы.