Чем отличаются первичный (PRIMARY KEY) и внешний (FOREIGN KEY) ключи?

Ключи в реляционных базах данных PRIMARY KEY — ключ, однозначно идентифицирующий строку Гарантирует уникальность записей и целостность данных Может состоять из одного или нескольких столбцов; значения NULL не…

Короткий ответ

Что ответить на собеседовании

Ключи в реляционных базах данных PRIMARY KEY — ключ, однозначно идентифицирующий строку Гарантирует уникальность записей и целостность данных Может состоять из одного или нескольких столбцов; значения NULL не допускаются FOREIGN KEY — ссылка на PRIMARY KEY, расположенный в другой таблице Поддерживает связь таблиц и ссылочную целостность данных Не позволяет получить несогласованные данные при обновлении или удалении записей

Подробный разбор

Ответ с пояснениями

Чем отличаются первичный (PRIMARY KEY) и внешний (FOREIGN KEY) ключи?

  • Ключи в реляционных базах данных
  • PRIMARY KEY — ключ, однозначно идентифицирующий строку
  • Гарантирует уникальность записей и целостность данных
  • Может состоять из одного или нескольких столбцов; значения NULL не допускаются
  • FOREIGN KEY — ссылка на PRIMARY KEY, расположенный в другой таблице
  • Поддерживает связь таблиц и ссылочную целостность данных
  • Не позволяет получить несогласованные данные при обновлении или удалении записей

Итог: PRIMARY KEY обеспечивает уникальность записи, а FOREIGN KEY связывает таблицы и сохраняет целостность данных.

Развёрнутый ответ

Краткий ответ

Первичный ключ (PRIMARY KEY) представляет собой уникальный идентификатор каждой записи в таблице базы данных. Он исключает дублирование строк и не допускает значения NULL. Внешний ключ (FOREIGN KEY) — это один столбец или их набор, ссылающийся на первичный ключ другой таблицы. Он поддерживает корректность связей между таблицами и обеспечивает референциальную целостность данных.

Основные положения

  • Первичный ключ позволяет однозначно найти запись в пределах таблицы и, как правило, индексируется для ускорения поиска. Например, в PostgreSQL 14+ для него автоматически создаётся уникальный индекс.
  • Внешний ключ соединяет данные двух таблиц, блокирует добавление значений, для которых нет соответствия, и поддерживает каскадные операции (CASCADE DELETE/UPDATE).
  • Совместное использование этих ключей формирует структуру реляционной базы данных, уменьшает избыточность и сохраняет логические связи. Это особенно важно для сложных систем с большим количеством взаимосвязанных сущностей.

Пример из практики

В прикладных системах первичные ключи используют для идентификации пользователей, заказов и других сущностей, а внешние — чтобы, например, связать заказ с конкретным пользователем. Распространённое решение — выбрать для PRIMARY KEY автоинкрементный столбец или UUID, а FOREIGN KEY применять для строгого контроля целостности связей между таблицами.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку