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

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

Ответ

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

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

  1. Уникальность: В таблице не может быть двух строк с одинаковым значением первичного ключа.
  2. Непустота: Ни одна из составляющих ключа колонок не может содержать значение NULL.
  3. Индексирование: Для обеспечения быстрого поиска по ключу СУБД автоматически создает уникальный индекс (обычно кластерный или нет).

Пример создания в SQL:

-- Первичный ключ на одном столбце
CREATE TABLE Employees (
    employee_id INT PRIMARY KEY, -- Столбец employee_id является PK
    name VARCHAR(100) NOT NULL,
    department VARCHAR(50)
);

-- Составной первичный ключ (из двух столбцов)
CREATE TABLE OrderDetails (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id) -- Комбинация этих двух столбцов уникальна
);

Почему это важно в разработке на C++? При проектировании схемы данных для приложения, которое будет работать с БД через ODBC или нативные библиотеки (например, для PostgreSQL или SQLite), правильный выбор первичного ключа критически важен для:

  • Производительности: Быстрого поиска и соединения таблиц (JOIN).
  • Целостности данных: Предотвращения дублирования записей.
  • Связей между таблицами: Первичный ключ одной таблицы используется как внешний ключ (Foreign Key) в другой, устанавливая связи "один-ко-многим".