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

«Что такое Foreign Key (внешний ключ) в базах данных?» — вопрос из категории Базы данных, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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

-- Таблица авторов (родительская)
CREATE TABLE authors (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

-- Таблица книг (дочерняя) с внешним ключом
CREATE TABLE books (
    id INT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    author_id INT,
    FOREIGN KEY (author_id) REFERENCES authors(id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
);

Действия при удалении/обновлении (ON DELETE/UPDATE):

  • CASCADE — удалить/обновить связанные записи
  • RESTRICT / NO ACTION — запретить операцию при наличии связей
  • SET NULL — установить NULL в FK-столбце
  • SET DEFAULT — установить значение по умолчанию

Практическое значение:

  1. Целостность данных — предотвращает "сиротские" записи (книги без автора)
  2. Связи между сущностями — реализует отношения "один-ко-многим"
  3. Оптимизация запросов — индексы на FK улучшают JOIN-операции

В SQL-запросах FK неявно используется в JOIN:

SELECT b.title, a.name
FROM books b
JOIN authors a ON b.author_id = a.id;