Telematriaпособие аналитика

Содержание › Аналитика

Модель данных для аналитика: сущности, связи и словарь данных

В постановке — «клиент», в интерфейсе — «покупатель», в базе — user и account, у бухгалтерии — «контрагент». Все уверены, что говорят об одном. Разница обнаруживается, когда у одного клиента оказывается две учётные записи и отчёт считает его дважды.

02.3 Аналитика · обновлено 2026-10-19

Модель данных принято считать делом разработчиков: таблицы, ключи, индексы. Но схема базы отвечает на вопрос «как хранится», а аналитику нужен другой — «что вообще существует в предметной области и по каким правилам». Если этот вопрос не задан, на него отвечает схема, и отвечает так, как удобно хранить, а не так, как устроен бизнес.

Цена ответа появляется позже: правило, зашитое в структуру, меняется не правкой постановки, а миграцией.

Логическая модель и схема базы

Разделение старое и полезное. Логическая модель описывает сущности, их смысл, связи и правила — без привязки к технологии. Физическая схема решает, как это разложить по таблицам, какие поля индексировать, что денормализовать ради скорости.

Аналитик отвечает за первое и не обязан разбираться во втором. Но обязан заметить, когда физическая схема молча меняет смысл: например, «у клиента одна учётная запись» превратилось в уникальный индекс, хотя в жизни у одного клиента бывает две.

Три вопроса к каждой сущности

  1. Что это — одним предложением. Не «заказ — это заказ», а «заказ — обязательство продать перечисленные товары по зафиксированной цене одному покупателю». Определение, которое нельзя сформулировать, означает, что сущностей на самом деле две.
  2. Чем одна отличается от другой. Что делает две записи одним и тем же: номер, сочетание полей, внешний идентификатор? От ответа зависит, что считать дублем и как сливать данные из двух источников.
  3. Как она живёт. Кто её создаёт, какие статусы она проходит, может ли вернуться назад, удаляется ли вообще — или только помечается закрытой.

Удаление — отдельное требование. «Удалить клиента» может значить три разных вещи: скрыть из интерфейса, обезличить данные или стереть физически вместе с историей заказов. Для отчётов, договоров и закона это разные решения, и выбирать их должен не разработчик.

Связи — там, где прячутся требования

Каждая связь между сущностями — это бизнес-правило, записанное в форме «один ко многим». Такие правила меняются, и меняются они дороже всего, потому что на них опирается всё остальное.

Связь в моделиВопрос, который стоит задатьЧто сломается, если ответ «да»
Заказ принадлежит одному клиентуБывают ли заказы без клиента — гостевые?Отчёты по клиентам, удаление клиента, повторная покупка
У заказа один адрес доставкиМожно ли отправить часть заказа в другое место?Расчёт доставки, статусы, возвраты по частям
У товара одна ценаНужна ли цена на момент заказа, а не текущая?Повторный расчёт старых заказов по новой цене
У пользователя одна рольБывает ли человек одновременно менеджером и проверяющим?Права доступа, разделение обязанностей

Хорошая привычка — формулировать связь словами в обе стороны: «у заказа ровно один клиент; у клиента ноль или больше заказов». Слово «ровно» почти всегда вызывает возражение, и это возражение — найденное требование.

Словарь данных

Модель показывает сущности и связи. Словарь данных — что значит каждое поле. Именно в нём живут вопросы, которые иначе всплывают на приёмке: включает ли сумма доставку, в какой валюте, как округляется.

Заказ.сумма
  смысл          итог к оплате покупателем, с доставкой, после скидок
  формат         число, 2 знака после запятой, валюта заказа
  обязательно    да, с момента подтверждения заказа
  источник       расчёт системы; вручную не меняется
  правила        округление по BR-07; при частичном возврате не меняется,
                 возврат хранится отдельно
  пример         1 249,90

Необязательно вести словарь по всем полям системы. Достаточно тех, что участвуют в расчётах, отчётах и интеграциях: на них сходятся разные люди, и у каждого своё понимание.

Где кончается работа аналитика

Типы колонок, индексы и нормализация — не предмет постановки. Но есть свойства данных, которые выглядят техническими, а на деле являются требованиями, и добавить их задним числом нельзя:

  • История изменений. Если не хранить, кто и когда поменял статус или сумму, прошлое не восстановить — ни для разбора спора, ни для отчёта.
  • Срок хранения. Сколько держать данные и что делать по истечении: удалять, обезличивать, переносить в архив.
  • Уникальность. Что запрещено дублировать — и что делать, если дубль всё же пришёл из другой системы.
  • Обязательность во времени. Поле может быть необязательным при создании и обязательным при закрытии — это правило жизненного цикла, а не формы.
Признак, что модели нет: на вопрос «что такое активный клиент» отдел продаж, бухгалтерия и отчёт отвечают по-разному — и все правы.

Проверка за двадцать минут

Возьмите три сущности из главного сценария продукта. Попросите разработчика и заказчика по отдельности дать каждой определение одним предложением. Сравните. Каждое расхождение — требование, которое пока живёт в двух головах.

Что дальше

Модель говорит, что хранится и как связано. Она молчит о том, сколько этого будет, как быстро должно находиться и сколько система может простоять. Это нефункциональные требования — и их чаще всего пишут так, что проверить нельзя.