Что такое ForeignKey

«Что такое ForeignKey» — вопрос из категории Базы данных, который задают на 33% собеседований Аналитик Данных. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример в SQL:

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

Здесь CustomerID в таблице Orders ссылается на CustomerID в таблице Customers. Если попытаться вставить заказ с несуществующим CustomerID, база данных выдаст ошибку.

В Django ORM:

class Customer(models.Model):
    name = models.CharField(max_length=100)

class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)

Параметр on_delete определяет поведение при удалении связанной записи (например, CASCADE — удалить связанные записи).