Решения (ADR)ADR-0001: нормализация данных

0001. Нормализованное хранение сущностей проекта (вариант B)

Актуально на: 2026-07-23

  • Статус: принято
  • Дата: 2026-07-23 (задокументировано задним числом)

Контекст

Данные проекта (продукты, планы сбыта/производства, персонал, финансы) нужно хранить так, чтобы по ним можно было считать агрегаты (SUM/AVG и др.) и адресно доставать значения для генерации документов. Рассматривались варианты хранения в JSON-полях против нормализованных таблиц.

Решение

Выбран вариант B — нормализованные таблицы Prisma для основной массы вводимых данных. Часть UI-состояния (например, projectCalc) остаётся в persisted JSON-state проекта.

Подробности и примеры запросов — ../engineering/data-model.md.

Последствия

  • ➕ Возможны агрегатные запросы и адресная выборка значений (нужно для подстановки в Word/PowerPoint — см. ../domain/data-placeholders-draft.md).
  • ➕ Явная схема, миграции под контролем.
  • ➖ Больше таблиц и связей; изменение структуры данных дороже, чем правка JSON.
  • ⚠️ Миграции применяет вручную владелец окружения — в CI выполняется только prisma generate.