Для чего нужен Foreign key

«Для чего нужен Foreign key» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные функции:

  1. Поддержка связей между таблицами (один-ко-многим, многие-ко-многим)
  2. Запрет операций, нарушающих целостность (например, удаление записи, на которую есть ссылки)
  3. Каскадное обновление/удаление (если настроено)

Пример в SQL:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

В Go при работе с ORM (например, GORM):

type Customer struct {
    ID   uint
    Name string
}

type Order struct {
    ID         uint
    CustomerID uint
    Customer   Customer `gorm:"foreignKey:CustomerID"`
}