В чем разница между INCLUDE и EXTEND в БД

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

Ответ

INCLUDE и EXTEND — это термины из UML, но в контексте БД их можно рассмотреть как способы связи сущностей.

INCLUDE (включение) — жесткая связь, где дочерняя сущность не может существовать без родительской (например, Order и OrderItem). В SQL это реализуется через внешний ключ с ON DELETE CASCADE.

EXTEND (расширение) — более гибкая связь, где сущность может существовать независимо, но дополняет другую (например, User и UserProfile). В SQL это тоже внешний ключ, но без каскадного удаления.

Пример с INCLUDE:

CREATE TABLE Orders (
    order_id INT PRIMARY KEY
);

CREATE TABLE OrderItems (
    item_id INT PRIMARY KEY,
    order_id INT,
    FOREIGN KEY (order_id) REFERENCES Orders(order_id) ON DELETE CASCADE
);

Пример с EXTEND:

CREATE TABLE Users (
    user_id INT PRIMARY KEY
);

CREATE TABLE UserProfiles (
    profile_id INT PRIMARY KEY,
    user_id INT UNIQUE,
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);