Sobes.tech
Назад к вопросам
Junior — Middle
70

Чем отличаются первичный ключ и внешний ключ в базе данных, и как они используются?

Компании, где спрашивали
Pimco

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

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

Определение:

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

Внешний ключ (Foreign Key) — это поле или набор полей, которые ссылаются на первичный или уникальный ключ другой таблицы. Он нужен для связи таблиц и контроля ссылочной целостности: нельзя сослаться на несуществующую запись.

Пример использования:

Например, есть таблица users и таблица orders.
В users поле id — первичный ключ, а в orders поле user_id — внешний ключ, который указывает на users.id.

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10, 2),
    CONSTRAINT fk_orders_user
        FOREIGN KEY (user_id) REFERENCES users(id)
);

Пояснение кода:

users.id — уникальный идентификатор пользователя. Он нужен, чтобы однозначно находить конкретную строку.
orders.user_id хранит ссылку на пользователя, который сделал заказ.
Ограничение FOREIGN KEY (user_id) REFERENCES users(id) не позволит добавить заказ с user_id, которого нет в таблице users. Это защищает данные от “битых” ссылок.

Ключевые моменты:

  • Первичный ключ уникально идентифицирует запись в своей таблице.
  • Внешний ключ связывает одну таблицу с другой.
  • Первичный ключ не должен повторяться и обычно не бывает NULL.
  • Внешний ключ может повторяться, потому что на одного пользователя может ссылаться много заказов.
  • Внешний ключ обеспечивает ссылочную целостность данных.
  • В одной таблице может быть только один первичный ключ, но может быть несколько внешних ключей.