Три аспекта у объекта

Заметка поможет более культурно взглянуть на архитектуру данных.

Разработчику рекомендуется рассматривать любой объект с трех сторон: предметной, процессной, системной.

Предметный аспект

Базовый бизнес-аспект. К этому аспекту относятся все поля, содержащие априорную информацию, связанную с объектом. Например: покупатель, договор, комментарий и т.д.

Процессный аспект

Опциональный бизнес-аспект. К этому аспекту относятся все поля с апостериорными данными о жизненном цикле объекта (факты, состояния, субъекты). Например: статус, исполнитель, дата создания, дата отгрузки и т.д.

Это аспект рекомендуется обособить (как расширение базового класса), т.е. разместить поля в отдельной таблице. Некоторые (часто изменяемые или изменяемые автоматическими процессами) поля рекомендуется вынести в отдельные таблицы. Дробление аспекта рекомендуется выполнять, опираясь на сценарии управления данными. Это позволит: снизить издержки при версионировании строк, уменьшить влияние блокировок, распараллелить процесс создания микросервисов или API для UI.

Системный аспект

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

Рекомендуется выделять поля (кроме id) префиксом sys.

Выгода

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

Начать дискуссию