таблица фактов, которая будет отслеживать сообщения
Во-первых, имейте в виду, что в таблице фактов обычно есть данные, которые могут быть агрегированы, измерены факты. Измерения используются для фильтрации данных в таблице фактов. Все остальное не имеет большого смысла в хранилищах данных. Возможно, нормализованная модель базы данных будет лучше для ваших нужд.
Одна вещь, которую необходимо учитывать, это то, что иногда
сеансы чата могут остаться без ответа
Это, например, будет в измерении, то есть DimSession, содержащем атрибуты всех сеансов, таких как статус, то есть без ответа. Обратите внимание, что другие атрибуты сеанса, как и участники, могут быть в измерениях DimDoctor и DimPatient.
Вы также сказали, что хотите отслеживать «DimOutcome». Вот две возможности. Сначала вы сохраняете эту информацию в измерении «сессия». Таким образом, вы можете отфильтровать таблицу фактов для различных результатов
Другая возможность состоит в том, что у вас есть столбцы для каждого результата в вашей таблице фактов. Так что у вас есть количество сеансов на результат. Это было бы по крайней мере что-то измеримое.
Здесь вы должны рассмотреть детализацию таблицы фактов. Есть ли одна запись на сеанс или в день? Одна запись на сеанс, возможно, не лучший выбор, если вы используете столбцы результатов в своей таблице фактов, поскольку эту информацию также можно получить, отфильтровав по DimSession и выполнив COUNT (*) для своей таблицы фактов.
Я думаю, мне нужно будет создать один факт для сообщений, а другой -
для всего сеанса это будет единственный выход?
Я думаю, что вся эта система хранения данных - это не то, что вы ищете. Нормализованная структура данных будет лучше для ваших нужд.
Если вы хотите узнать больше об этом, воспользуйтесь схемой google для звездообразной схемы или схемой снежинки, если вы хотите получить представление о том, как обычно реализуется хранилище данных.
Очень укороченная звездная схема ...