← Назад к вопросам
Что такое первичный ключ (Primary Key)?
1.3 Junior🔥 181 комментариев
#Базы данных и SQL
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое первичный ключ (Primary Key)?
Первичный ключ — это поле или комбинация полей в таблице БД, которое уникально идентифицирует каждую строку.
Основные свойства
- Уникальность: каждое значение встречается только один раз
- Не NULL: первичный ключ не может быть пустым
- Один на таблицу: максимум один первичный ключ (хотя может быть составной)
- Уникальный индекс: БД автоматически создаёт индекс для ускорения поиска
Примеры
Таблица Users:
id (PK) | name | email
1 | John | john@example.com
2 | Alice | alice@example.com
3 | Bob | bob@example.com
Здесь id — первичный ключ. Гарантирует, что каждый пользователь имеет уникальный id.
Типы первичных ключей
Простой первичный ключ:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
Составной первичный ключ:
CREATE TABLE order_items (
order_id INT,
item_id INT,
quantity INT,
PRIMARY KEY (order_id, item_id)
);
Здесь PRIMARY KEY состоит из двух полей. Комбинация (order_id, item_id) должна быть уникальной.
Суррогатный ключ (Surrogate Key):
CREATE TABLE products (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100)
);
Используется UUID или BIGINT — вместо естественного ключа.
Отличие от UNIQUE
PRIMARY KEY:
- Не может быть NULL
- Только один на таблицу
- Создаёт clustered индекс
- Используется для references (foreign key)
UNIQUE:
- Может быть несколько NULL
- Можно несколько на таблицу
- Создаёт non-clustered индекс
- Не используется для FK
Тестирование первичного ключа
Проверка уникальности:
INSERT INTO users (id, name) VALUES (1, 'John');
INSERT INTO users (id, name) VALUES (1, 'Alice'); -- ERROR: Duplicate key
Проверка NOT NULL:
INSERT INTO users (id, name) VALUES (NULL, 'Bob'); -- ERROR: NULL not allowed
Проверка составного ключа:
INSERT INTO order_items VALUES (1, 1, 5); -- OK
INSERT INTO order_items VALUES (1, 1, 10); -- ERROR: Duplicate (1,1)
Для QA Engineer
При тестировании нужно:
- Попробовать вставить дубликат PK — должна ошибка
- Попробовать вставить NULL — должна ошибка
- Проверить, что БД правильно работает с составными ключами
- Проверить производительность — индекс ускоряет поиск
- Проверить целостность данных — PK должен быть последовательным
Первичный ключ — это фундамент целостности данных в БД.