← Назад к вопросам

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

2.2 Middle🔥 161 комментариев
#Диаграммы и моделирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

INCLUDE vs EXTEND: связи в диаграммах вариантов использования

Это НЕ стандартные SQL операции. Это отношения в UML диаграммах вариантов использования (Use Case Diagram). Они описывают, как разные use cases взаимодействуют и переиспользуются.

Обе связи служат одной цели: избегать дублирования описания scenarios. Но применяются в разных ситуациях.

INCLUDE — обязательная вставка

Определение

INCLUDE означает, что один use case всегда включает другой use case как часть своего сценария. Это обязательное расширение.

Логика

"Use Case A INCLUDE Use Case B" = "Когда происходит A, в нем ОБЯЗАТЕЛЬНО есть B"

B выполняется каждый раз, когда выполняется A. Это не опционально.

Практический пример

Анализ: Покупка товара в интернет-магазине

Use Case: "Оформить заказ"
  INCLUDE: "Оплатить заказ"
  INCLUDE: "Отправить уведомление клиенту"
  INCLUDE: "Обновить инвентарь"

Когда клиент оформляет заказ, ВСЕГДА происходит:

  1. Оплата (иначе не оформится)
  2. Отправка уведомления
  3. Обновление количества товаров на складе

Нель отправить заказ БЕЗ оплаты или БЕЗ уведомления.

Еще примеры INCLUDE

"Авторизация пользователя" INCLUDE "Проверка пароля"

  • Без проверки пароля авторизация не произойдет
  • Это обязательный подпроцесс

"Подать заявку на кредит" INCLUDE "Проверить кредитную историю"

  • Проверка истории ВСЕГДА идет при подаче заявки
  • Это не опция, это requirement

На диаграмме

[Оформить заказ] ------>---include----> [Оплатить заказ]
                 ------>---include----> [Отправить уведомление]
                 ------>---include----> [Обновить инвентарь]

Стрелка идет ОТ основного use case (Оформить заказ) К расширению (Оплатить).

EXTEND — условное расширение

Определение

EXTEND означает, что один use case может опционально расширить другой. Это условное расширение, которое происходит в определенных обстоятельствах.

Логика

"Use Case B EXTEND Use Case A" = "Иногда, при определенных условиях, A расширяется через B"

B выполняется только если происходит определенное условие. Это опционально.

Практический пример

Анализ: Оформление заказа

Base Use Case: "Оформить заказ"
  EXTEND: "Применить скидочный код" (только если пользователь захочет)
  EXTEND: "Добавить подарок" (только если сумма заказа > 10000)
  EXTEND: "Оформить подписку" (только если юзер выберет опцию)

Когда клиент оформляет заказ:

  • Скидочный код применяется ТОЛЬКО если пользователь его введет
  • Подарок добавляется ТОЛЬКО если сумма достаточная
  • Подписка ТОЛЬКО если клиент выберет

Эти шаги могут быть пропущены, и заказ все равно оформится.

Еще примеры EXTEND

"Просмотреть товар" EXTEND-ed по "Прочитать отзывы"

  • Клиент может просто посмотреть товар
  • Или он может выбрать и прочитать отзывы
  • Отзывы опциональны

"Зарегистрироваться" EXTEND-ed по "Загрузить аватар"

  • Регистрация может завершиться БЕЗ аватара
  • Но пользователь может загрузить аватар как дополнение

На диаграмме

[Применить скидку] -----extend-----> [Оформить заказ]
[Добавить подарок] -----extend-----> [Оформить заказ]
[Оформить подписку] -----extend-----> [Оформить заказ]

Стрелка идет К основному use case. EXTEND показывает, что это дополнение.

Таблица различий

ХарактеристикаINCLUDEEXTEND
ОбязательностьОбязательноОпционально
УсловиеБез условийС условиями ("если...")
Когда происходитВСЕГДАИногда
ПримерОплата при заказеСкидка если код введен
Можно ли пропуститьНЕТДА
Направление стрелкиFROM основного TO расширенияFROM расширения TO основного
Логическое значениеANDOR / IF

Практический пример: Система бронирования отеля

Use Case: "Забронировать номер"

INCLUDE:

Забронировать номер INCLUDE Подтвердить учетные данные
Забронировать номер INCLUDE Обработать платеж
Забронировать номер INCLUDE Отправить подтверждение

Эти три шага ВСЕГДА происходят при бронировании. Без них бронирование не завершится.

EXTEND:

Добавить страховку EXTEND Забронировать номер (если клиент выберет)
Зарезервировать парковку EXTEND Забронировать номер (если авто есть)
Указать особые пожелания EXTEND Забронировать номер (если нужны)
Добавить экскурсию EXTEND Забронировать номер (опционально)

Эти шаги опциональны. Клиент может забронировать номер БЕЗ них.

Почему это важно для BA

INCLUDE помогает выявить критические процессы — то, без чего система не может работать ✓ EXTEND помогает выявить опциональные функции — то, что делает систему удобнее, но не обязательно ✓ Правильное описание зависимостей — облегчает жизнь разработчикам (они знают, что можно тестировать отдельно) ✓ Планирование спринтов — INCLUDE features нужно реализовать в первую очередь, EXTEND можно отложить

Распространенная ошибка

Новичок часто путает: "Почему мы не просто ВСЕГДА используем INCLUDE?"

Ответ: Потому что INCLUDE описывает обязательную логику, а EXTEND описывает опциональное поведение. Если вы отметите все как INCLUDE, то требования будут неправильные и запутанные.

Запомни просто

INCLUDE = "ВСЕГДА", "ОБЯЗАТЕЛЬНО", "В ЛЮБОМ СЛУЧАЕ"

EXTEND = "МОЖЕТ БЫТЬ", "ПРИ УСЛОВИИ", "ОПЦИОНАЛЬНО"

Esли сомневаешься, спроси: "Может ли основной use case завершиться БЕЗ этого расширения?" Если ДА — это EXTEND. Если НЕТ — это INCLUDE.

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