Что такое первичный ключ (Primary Key) в базе данных?

«Что такое первичный ключ (Primary Key) в базе данных?» — вопрос из категории Базы данных и SQL, который задают на 28% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Первичный ключ (Primary Key, PK) — это ограничение в реляционной базе данных, которое гарантирует уникальность и однозначную идентификацию каждой строки в таблице. С точки зрения тестирования, понимание PK необходимо для проектирования тестовых данных и проверки целостности данных.

Ключевые свойства первичного ключа:

  • Уникальность: В таблице не может быть двух строк с одинаковым значением PK.
  • Отсутствие NULL: Поле PK не может содержать значение NULL.
  • Стабильность: Значение PK, как правило, не должно изменяться в течение жизни строки.

Пример создания таблицы с PK (SQL):

CREATE TABLE Users (
    user_id INT PRIMARY KEY, -- Объявление первичного ключа на одном столбце
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);
-- Или составной первичный ключ (реже)
CREATE TABLE OrderItems (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT,
    PRIMARY KEY (order_id, product_id) -- PK из двух столбцов
);

Практическое значение для QA-инженера:

  1. Тестирование целостности данных: Нужно проверять, что система корректно обрабатывает попытки вставить дубликат PK или строку с NULL в PK. Это часто приводит к SQL-ошибке IntegrityConstraintViolation.
  2. Подготовка тестовых данных: При создании тестовых записей важно генерировать уникальные значения для PK. Часто для этого используют автоинкрементные поля или UUID.
  3. Понимание связей между таблицами: PK одной таблицы используется как Внешний ключ (Foreign Key, FK) в другой. Тестирование таких связей включает проверку каскадного удаления/обновления.
  4. Влияние на производительность: PK автоматически создает уникальный индекс, что ускоряет поиск по этому полю. Это важно при нагрузочном тестировании запросов, использующих PK в условии WHERE.