Я нахожусь в процессе разработки нового хранилища данных и задаюсь вопросом о том, как лучше всего смоделировать для наших требований.
В нашей системе есть заказы, которые могут иметь различный статус с течением времени (например, Не запущен, Выполняется, Завершено, Отклонено), а также покупатель, продавец, созданная временная метка и временная метка изменения статуса.Пользователи хотят иметь возможность анализировать данные на уровне транзакций и отслеживать жизненный цикл заказов при изменении их статусов.
В настоящее время я моделирую классическую звездную схему, измерения для покупателя, продавца, даты и времени.с фактом заказа, который содержит общую сумму в качестве меры.Теперь моя проблема в том, что я не уверен, как моделировать жизненный цикл статусов.Моим первым инстинктом было добавление статуса в качестве нового измерения, добавление новой строки в таблицу фактов при каждом изменении статуса и сохранение значения общей суммы одинаковым.Однако я читал, что это плохая практика, поскольку агрегатные функции в таблице фактов становятся более сложными, так как общие суммы будут подсчитываться несколько раз, если пользователи не будут осторожны.Я также рассматриваю возможность создания еще одной таблицы фактов для статуса заказа, которая не включает общую сумму, но относится ко всем тем же измерениям, что и первая таблица фактов.Кроме того, пользователи могут быть заинтересованы в анализе продолжительности каждого заказа, потраченного на каждый статус, который я мог бы добавить в качестве меры в этой таблице фактов.Но если это отдельная таблица фактов, как работает связь с другой таблицей фактов?Таким образом, пользователи могут знать, что этот заказ, который провел так долго в этом статусе, имел эту общую сумму?
Ищете какие-либо предложения о наилучшем подходе для моделирования этой ситуации.Я также не женат на модели звездной схемы, если есть лучший подход.