DDL / СхемаНачальный
PRIMARY KEY
Уникальный идентификатор строки. Автоматически создаёт уникальный индекс, не допускает NULL.
Синтаксис
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY -- или PRIMARY KEY (col1, col2) -- составной
Объяснение
PRIMARY KEY = UNIQUE + NOT NULL + автоматический индекс. На таблицу — только один.
Рекомендации для PostgreSQL:
- BIGINT GENERATED ALWAYS AS IDENTITY — современный стандарт
- UUID — если нужна глобальная уникальность, но медленнее из-за случайности (UUID v7 лучше)
- Суррогатный ключ (id) лучше натурального (email) — email может измениться
Пример
-- Современный вариант CREATE TABLE products ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL ); -- Составной ПК CREATE TABLE order_items ( order_id BIGINT REFERENCES orders(id), product_id BIGINT REFERENCES products(id), PRIMARY KEY (order_id, product_id) );
Связанные термины
Анекдоты по теме
PostgreSQL Extensions: — uuid-ossp: генерация UUID — pg_trgm: поиск по подстроке — postgis: геопространственные данные — timescaledb: временные ряды — pg_stat_statements: статистика запросов — hstore: key-value в колонке — pg_cron: cron задачи внутри БД PostgreSQL — это не просто база. Это платформа.
— Что такое DEFAULT в SQL? — Значение по умолчанию. Если ты не сказал, что положить в поле, база кладёт сама. «Не знаешь, сколько тебе лет? Поставим 18».
— Зачем нужны внешние ключи? — Чтобы в таблице orders не было customer_id, которого нет в таблице customers. — Но они замедляют INSERT! — Зато ты не получишь «осиротевшие» заказы без покупателя.