Информационная архитектура: сущности (практика, vol.1)

Вторая часть про сущности в ИА, теперь с упором на практику: от сбора данных до выявления связей и таксономий.

9-11 минут на прочтение
Информационная архитектура: сущности (практика, vol.1)

В предыдущей статье цикла мы разобрались, что такое информационные сущности, какие бывают типы свойств и базовые связи, прошлись по таксономиям и классификациям. Теперь давайте приступим к более практической части.

1. Небольшое вступление

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

Рассматривайте шаги, описанные ниже, исключительно как советы опытного архитектора, и ни в коем случае не как чёткие инструкции, которым надо слепо следовать. Более того, в реальных продуктах я сам не всегда всё это делаю — просто потому что не всегда в этом есть необходимость.

2. Подготовка: контекст и границы

Многие советы из этого раздела так или иначе перекликаются с обычной работой над продуктом (формирование границ, фиксация метрик и прочее). Если у вас уже есть эти данные, прекрасно, переиспользуйте их. Если же нет, то это может стать неплохим поводом подсветить слабые места продуктового подхода.

2.1. Цель продукта

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

В сложных продуктах может быть сильно больше 3-5 ключевых задач. В этом случае рекомендую декомпозировать его на логические или функциональные компоненты — и в каждом из них уже выводить свои цели и задачи.

Для каждой задачи задайте измеримые KPI: «среднее время до результата (time‑to‑task)», «конверсия в целевое действие», «доля успешных сценариев» и подобные.

2.2. Границы домена

Составьте карту предметной области: какие объекты и операции в неё входят, а какие находятся за её пределами. Например, для маркетплейса внутрь попадают товары, продавцы, категории и заказы, а расчёт комиссий или логистика могут быть вынесены в соседние сервисы. Это защитит команду от размывания фокуса и неконтролируемого расширения требований.

2.3. Источник истины

Определите, где хранятся все артефакты ИА: таблицы сущностей, словари терминов, фасеты, схемы связей и тд. Лучше всего, если это будет ваша внутренняя вики, типа Confluence. Для диаграмм и визуальных схем можете использовать draw.io (благо, он встраивается почти куда угодно) или FigJam.

Важно, чтобы был один актуальный источник, а не десяток несвязанных и противоречивых документов.

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

2.4. Согласование терминологии

Создайте единый глоссарий терминов, где каждое понятие имеет согласованное определение. Например: в интерфейсе, в аналитике и в БД термин «пользователь» должен значить одно и то же, а не три разных понятия: аккаунт, клиент и автор. Я встречал системы, где одна и та же информационная сущность в одном месте называлась «пользователь», в другом «клиент», а в третьем «посетитель». Не надо так.

Хорошо организованный глоссарий устраняет двусмысленности и предотвращает непонимание между аналитиками, дизайнерами и разработчиками.

3. Декомпозиция: перечень сущностей

После того как определены контекст и границы продукта, наступает этап декомпозиции — разбиения системы на отдельные сущности. На этом шаге мы превращаем абстрактные понятия («контент», «пользователи», «данные») в конкретные элементы модели, с которыми можно работать, описывать их свойства и связи.

Цель здесь простая: увидеть полную картину того, из чего состоит продукт и как эти части взаимодействуют между собой.

3.1. Определение типов

Пройдитесь по всем сценариям вашего продукта и выпишите устойчивые типы информации: «товар», «категория», «метка/тег», «пользователь», «заказ», «корзина», «страница» и тп. Добавьте сюда вспомогательные и производные сущности, которые не видны пользователю напрямую, но обеспечивают работу системы — например, «транзакция», «сессия», «ревизия».

Скорее всего, на этом этапе вы упустите какие-то объекты, ничего страшного. Как я уже говорил, работа над IA — не всегда строго последовательный процесс. Вернётесь, как найдёте ошибку.

3.2. Описание сущности

Для каждой сущности кратко опишите:

  • роль (что делает эта сущность, зачем она нужна);
  • жизненный цикл (от создания до удаления или архивации);
  • точки появления в интерфейсе (можно прям названия экранов);
  • обязательные операции (создать/редактировать/найти/связать).

Тут важно не уходить в дебри и не погружаться в детальное проектирование. Вот вам пара простых примеров:

Товар

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

Жизненный цикл: создаётся продавцом или контент-менеджером, редактируется при обновлении данных, архивируется при снятии с продажи.

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

Операции: создать, редактировать, связать с категорией и тегами, добавить в акцию или архивировать.

Пользователь

Роль: системная сущность, представляет зарегистрированного клиента или участника системы.

Жизненный цикл: создаётся автоматически при регистрации или импорте из CRM, обновляется при изменении профиля, может быть деактивирован или удалён.

Точки появления: личный кабинет, заказы, отзывы, админ-панель.

Операции: регистрация, авторизация, редактирование профиля, привязка к заказам или организациям.

3.3. Проверка на дубликаты

Проверьте, нет ли дублирующих или пересекающихся сущностей: если у вас есть и «автор», и «пользователь», возможно, это одно и то же с разными контекстами. Тогда их лучше объединить в одну сущность и добавить поле «роль» или «тип».

3.4. Закрепление ответственных

Для сложных систем составьте матрицу принадлежности: кто владелец данных по каждой сущности (продукт, контент, аналитика), где они хранятся и как обновляются. Опять же, не уходите в детали, здесь важно оставаться на высоком уровне абстракции.

Вот простенький пример такой матрицы для e-com:

СущностьВладелецХранилищеКанал обновленияКомментарий
ТоварПродакт-менеджер,
Контент-отдел
CMSИмпорт из ERP, ручное редактированиеДанные синхронизируются ежедневно
КатегорияКонтент-отделCMSРучное обновление, ревью раз в кварталСогласование с SEO и маркетингом
ПользовательАналитикаCRMРегистрация, APIОбновление при каждом входе
ЗаказФинансыERPАвтоматическая синхронизацияИсточник для отчётности
ТегКонтент-отделCMSРучное добавление, периодическая чисткаПроверка дубликатов перед публикацией

Такая таблица помогает выстроить процессы и избежать ситуаций, когда разные отделы изменяют одни и те же сущности без синхронизации.

3.5. Выработка метрик

Дополнительно укажите метрики для каждой сущности — показатели того, что она используется и актуальна. Вот несколько примеров:

Доля заполненных полей — процент карточек, где заполнены все обязательные атрибуты (например, описание, фото, цена, категория).

Частота обращений — сколько раз сущность запрашивается пользователями или системами в сутки/неделю (например, просмотры карточек товаров или загрузка профилей).

Связность — среднее количество связей с другими сущностями (например, число тегов на статью, товаров в категории).

Актуальность данных — доля сущностей, обновлённых за последние N дней.

Ошибки и дубли — количество некорректных или дублирующих записей в системе.

Использование в сценариях — сколько продуктовых сценариев или отчётов опираются на эту сущность.

Эти показатели помогут оценивать зрелость и здоровье информационной архитектуры, выявлять запущенные участки и планировать развитие модели данных.

4. Классификация: таксономии, уровни и операции

После того как сущности выделены и описаны, важно понять, как они группируются и взаимодействуют в структуре продукта. Этот этап превращает «список объектов» в осмысленную систему: мы определяем, какие сущности являются базовыми разделами, какие служат фильтрами или связками, и как пользователь перемещается между ними.

Классификация помогает превратить набор данных в удобную навигацию, а архитектуру — в понятную карту продукта.

4.1. Типы таксономий

Разведите иерархические (категории, разделы, рубрики) и плоские (теги, темы, ключевые слова) таксономии. Определите, какие сущности формируют структуру навигации, а какие служат только для связей или фильтрации.

Пример, по традиции, из e-com:

Категории формируют иерархическое дерево меню, которое задаёт маршрутизацию и навигацию: «Одежда» → «Женская» → «Блузки».

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

В результате одна и та же карточка товара может одновременно находиться в нескольких категориях и иметь множество тегов, отражающих её свойства или состояние.

4.2. Уровни сущностей

Назначьте уровень сущности — высокий, средний или низкий:

  • Высокие уровни — это корневые разделы и хабы, которые формируют скелет навигации и точку входа в систему.
  • Средние уровни — это страницы‑коллекции, объединяющие однотипные объекты.
  • Низкие уровни — карточки конкретных объектов, где реализуются операции и принимаются решения.

Пример распределения сущностей по уровням:

УровеньСущностьТип задач пользователяТип контента
ВысокийКаталог, Блог, ДокументацияОбзор, переход к разделуНавигационный
СреднийКатегория, Раздел, ПроектСравнение, поискКоллекционный
НизкийТовар, Статья, ПользовательИзучение, действие, покупкаОбъектный

Такое разделение помогает проектировать маршрут от главной страницы к объекту и обратно, управлять глубиной дерева и оптимизировать путь пользователя.

4.3. Группы, фасеты и фильтры

Сформируйте операционные группы, в которых будет понятно, где живёт каждая сущность (в каком разделе, хабе или подсистеме), какие фасеты с фильтрами к ней применимы и какие действия доступны. Это создаёт связь между информационной архитектурой и интерфейсом.

Пример разницы между статьёй и товаром:

СущностьРазделФасеты и фильтрыОсновные операции
ТоварКаталогБренд, Цена, Размер, ЦветКупить, Сравнить, Добавить в избранное
СтатьяМедиаРубрика, Теги, ДатаЧитать, Поделиться, Добавить в подборку

4.4. Приоритеты и наследование

Добавьте описание приоритетов и наследования таксономий: что отображается в интерфейсе, что используется для аналитики и SEO, а что служит внутренней классификацией.

Например:

Для корпоративного портала «Тип документа» может быть фасетом (для фильтрации и аналитики), а «Отдел» — иерархической категорией (для навигации и прав доступа).

В коммерции «Категория» и «Подкатегория» определяют URL и хлебные крошки, но не отображаются в фасетах, где остаются только фильтры «Бренд», «Цена», «Материал».

Обязательно фиксируйте ещё и правила наследования: категория → подкатегория → объект. В интерфейсе это проявляется как автоматическое применение фильтров при переходе на нижний уровень.

4.5. Управление обновлениями

Зафиксируйте методы актуализации таксономий: кто отвечает за создание новых терминов, их перевод, синхронизацию и архивирование. Опишите процессы ревизии, чтобы не допустить появления дубликатов или устаревших меток.

Например, контент‑отдел добавляет новые категории раз в квартал, SEO‑отдел проводит сверку алиасов, а аналитика проверяет наличие связанных данных.

Для крупных продуктов полезно ввести аудит изменений с фиксированием автора, даты пересмотра и краткого описания причины (например, «слияние категорий», «переименование фасета»).

5. Выявление связей: кардинальности и контексты

В теоретической части цикла мы говорили о кардинальностях, хранении, сценариях и индексах. Теперь давайте взглянем на то, как к этом прийти.

5.1. Кардинальности

Определение кардинальности было в прошлой статье, подробно на термине останавливаться не стану. Добавлю только, что для каждой связи крайне желательно описать:

  • с чем осуществляется связь,
  • тип связи,
  • глубину вложенности и
  • пример (при необходимости).

Вот как это может выглядеть для сущности «товар»:

Связан сКардин.Глубина вложенностиОписание связи и кардинальности
Категория1:N2-3 уровняИерархическая таксономия. Один товар принадлежит одной конечной категории, но категория содержит множество товаров. В родительской категории находятся все товары дочерних.
ТегM:N1 уровеньПлоская таксономия. Один товар может иметь несколько тегов, каждый тег применяется к нескольким товарам.
ЗаказM:N1 уровеньСвязанная сущность. Один товар может входить во множество заказов. В одном заказе может быть несколько товаров.
Отзыв1:N1 уровеньСвязанная (дочерняя) сущность. У одного товара может быть множество отзывов.
ПользовательM:N1 уровеньСвязанная сущность. Пользователь может взаимодействовать с несколькими товарами (просмотры, избранное, история покупок). С одним товаром могут взаимодействовать множество пользователей.

Такая таблица может стать отличным началом для дальнейшей проработки связей.

5.2. Контекстные связи

Речь о связях вроде «похожие», «часто вместе», «варианты», «альтернативы» и так далее. Они используются в карточках, рекомендациях и аналитике пользовательских сценариев. Например, в e-commerce это может быть «с этим товаром часто покупают», а в медиа — «похожие статьи» или «продолжение серии».

Важно разделять логические связи (на уровне ИА) и вычисляемые (на уровне аналитики и рекомендательных алгоритмов).

Вот тот же пример, но с добавленными контекстными связями. Здесь и дальше я буду удалять лишние столбцы для читаемости, но в реальной таблице их лучше бы оставлять (или делать перекрёстные таблицы):

Связан сКонтекстТип контекста
Категория«Товары в этой категории» — аналогичные товары из категории.Логический
Тег«Похожие товары» — товары с пересекающимися тегами.Логический
Заказ
Отзыв
Пользователь«Вам понравится» — на основе поведенческих данных и предыдущих заказов.Вычисляемый

Разумеется, эта табличка сильно упрощает реальность. Даже в простеньком интернет-магазине контекстная связь «Похожие товары» будет, скорее, вычисляемой на основе многих факторов, а не только тегов.

5.3. Ключевые и вариативные связи

Выделите два типа связей:

  • ключевые (частые) связи — они должны быть быстрыми, индексируемыми, проверяемыми на целостность;
  • вариативные — их можно хранить гибко, например, в JSON или агрегированных таблицах.

Вот тот же пример:

Связан сТип связиКомментарий к типу связи
КатегорияКлючеваяОсновная связь для навигации и фасетной фильтрации, требует строгой целостности и индексации.
ТегВариативнаяМожет меняться часто, используется для быстрых выборок и контекстных срезов, хранится гибко.
ЗаказКлючеваяОдна из бизнес‑критичных связей, формирует аналитику продаж и отчётность, требует транзакционной целостности.
ОтзывВариативнаяДанные обновляются динамически пользователями; важно для контентных сервисов, но не влияет на бизнес‑логику.
ПользовательВариативнаяОснована на поведенческих данных (просмотры, избранное, покупки), часто хранится в отдельных логах или кэше.

5.4. Направление и зависимости связей

Направления связей и зависимость объектов часто определяет их поведение. Заказ зависит от пользователя, а не наоборот. Комментарий зависит от поста, а не пост от комментария. Такие зависимости влияют на каскадное удаление и миграции, это очень важная часть ИА и дальнейшего проектирования баз данных.

Вот как это может выглядеть:

Связан сНаправление связиЗависимостьОписание
КатегорияКатегория → ТоварТовар зависит от категорииПри удалении категории товары должны быть перемещены, переназначены или архивированы.
ТегДвусторонняя (M:N)НезависимаяПри удалении тега удаляются только связи, товары остаются без изменений.
ЗаказТовар → ЗаказЗаказ зависит от товараЗаказ хранит ссылки на товары. При удалении товара заказы сохраняют данные о позиции, помечая их как архивные или недоступные.
ОтзывТовар → ОтзывОтзыв зависит от товараПри удалении товара отзывы удаляются или помечаются как «осиротевшие».
ПользовательДвусторонняя (поведение)ЧастичноПоведенческие связи с товаром (просмотры, избранное) можно анонимизировать или обнулить при удалении пользователя.

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

6. Итог

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

Павел Шерер, продюсер IT-решений

Канал в Telegram

Раньше тут были комментарии, но я решил не плодить сущности. Есть что сказать или спросить — велкам в телеграм-канал:

Обсудить в Telegram