Очень важным понятием в одномерном моделирования является то, что зерна. Ральф Кимбалл (чья работа, с которой вы столкнетесь снова и снова, если вы изучаете моделирование размеров) подчеркивает, что очень важно моделировать из самого низкого возможного зерна. Это позволяет вам нарезать и нарезать ваши данные в максимально возможной степени, суммируя от самых низких до любых более высоких гранулярностей.
Довольно часто, когда вы находите одну из этих проблем, где все кажется много-ко многим, проблема в том, что вы выбрали неправильное зерно для рассматриваемой таблицы фактов. С извинениями Nick.McDermaid (который предложил это изменение детализации в комментариях), «участие человека в аварии» является более низкой детализацией, чем «авария», что снижает степень детализации таблицы фактов по крайней мере на этом уровне - и создавая измерение инцидента - имеет большой смысл.
Возможно, это не самая низкая степень детализации; например, если ваш набор данных отслеживает травмы, каждый участник может иметь несколько травм. Таким образом, таблица фактов может быть лучше, чем «травмы, полученные во время несчастного случая», в этом случае вам понадобится строка в измерении «Травма», которая указывает «нет травмы», в случае, если включить тех участников, которые не были ранены. Поэтому первое, что вы должны сделать, это не решить, что такое таблица фактов, это просеять данные и попытаться выяснить, какова ваша самая низкая степень детализации; как только вы это сделаете, вы должны хорошо справиться с тем, как будет выглядеть ваша таблица фактов, и какие измерения вам нужны.
Размерное моделирование может быть немного жесткой гайкой для трещин, потому что есть несколько способов сделать что-то, и самый правильный способ часто кажется не очень очевидным, особенно если вы переходите с фона, где вы 'используется для более нормализованных структур данных. Я бы предложил вначале попытаться смоделировать что-то, используя самые основные типы таблиц - т. Е. Попытаться избежать таких вещей, как снежинка, таблицы мостов и т. Д. - и посмотреть, можете ли вы придумать решение, которое позволит избежать этих трюков. Очень часто это приводит к лучшей модели (т. Е. К которой проще перемещаться, имеет лучшую производительность запросов и может использоваться для ответа на другие вопросы).
Совет Nick.McDermaid, чтобы экспериментировать и попробовать разные вещи, также прочен, так как он может помочь вам вырваться из ваших первоначальных предположений. Иногда существует множество потенциальных проектов, которые могут быть необходимы, чтобы решить, что лучше.
Один из способов - признать, что для этого есть другое измерение - измерение «сбой». Таким образом, крах с 5 автомобилями получает пять рядов в том, что все указывает на одну и ту же запись одного измерения (для каждого сбоя создается новый). Это один из способов моделирования детализации заголовка в звездной схеме без нарушения идеи схемы звезды. Вы законно моделируете «крах», поэтому вполне нормально, чтобы получить собственное измерение с атрибутами вокруг сбоя. Вы даже можете сказать, что измерение крушения может соединить с другим уровнем более высокого уровня на уровне крушения. –
Другим способом моделирования является использование таблицы моста, которая представляет собой конструкцию, которую некоторые (не все) средства отчетности могут использовать для остановки двойного подсчета. http://www.kimballgroup.com/2012/02/design-tip-142-building-bridges/ –
Спасибо за ваш ответ! Итак, если я правильно понимаю, вы предлагаете мне превратить таблицу фактов «Несчастные случаи» в таблицу измерений и иметь в качестве факта таблицу, состоящую только из внешних ключей измерений? – avakas