Ключи в реляционных базах данных PRIMARY KEY — ключ, однозначно идентифицирующий строку Гарантирует уникальность записей и целостность данных Может состоять из одного или нескольких столбцов; значения NULL не допускаются FOREIGN KEY — ссылка на PRIMARY KEY, расположенный в другой таблице Поддерживает связь таблиц и ссылочную целостность данных Не позволяет получить несогласованные данные при обновлении или удалении записей
Чем отличаются первичный (PRIMARY KEY) и внешний (FOREIGN KEY) ключи?
Ключи в реляционных базах данных PRIMARY KEY — ключ, однозначно идентифицирующий строку Гарантирует уникальность записей и целостность данных Может состоять из одного или нескольких столбцов; значения NULL не…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Чем отличаются первичный (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 применять для строгого контроля целостности связей между таблицами.