Некоторые сценарии для отношений M: M в модели хранилища данных
Большинство OLAP-серверов и систем ROLAP имеют средства для работы со структурами данных M: M, но есть некоторые предостережения, на которые вам следует обратить внимание. Если вы реализуете отношения M: M, вам нужно будет следить за уровнем отчетности и теми инструментами, которые вы хотите поддерживать.
Сценарий 1: измерение M: M на таблицу фактов
Примером этого может быть несколько водителей на моторную политику. Если вы добавляете или удаляете драйвер, транзакция корректировки политики может иметь отношение к списку драйверов, который изменяется вместе с настройкой.
Вариант 1 - M: M таблица моста фактов драйвера.
Это будет довольно большой объем данных, так как он содержит драйверы x строки транзакций для данной политики. SSAS может напрямую использовать эту структуру данных, но выполнять запросы через инструмент ROLAP медленнее.
Если ваши отношения M: M основаны на объектах, которые являются специфическими для ряда фактов (например, водители на автомобиле), это также может быть подходящим для инструмента ROLAP, при условии, что ваш инструмент ROLAP поддерживает отношения M: M (например, с использованием контекстов в Business Объекты).
Вариант 2 - фиктивная таблица измерений «комбинаций»
Если вы отображаете список общих кодов в таблицу фактов (т. Е. Связанные сущности не свойственны строке фактов), то вы можете использовать другой подход, который сократит объемы данных. Примером сценария этого типа являются коды МКБ во время стационарного посещения. Каждое стационарное посещение будет иметь один или несколько диагнозов ICD и / или процедуры, перечисленные против него. Коды ICD являются глобальными.
В этом случае вы можете составить отдельный список комбинаций кодов для каждого случая. Создайте таблицу измерений с одной строкой для каждой отдельной комбинации и создайте таблицу связей между комбинациями и справочными таблицами для самих кодов ICD.
Таблица фактов может иметь ключ измерения к измерению «комбинации», а строка измерения содержит список ссылок на фактические коды ICD. Большинство инструментов ROLAP могут использовать эту структуру данных. Если ваш инструмент будет работать только с фактическим отношением M: M, то вы можете создать представление, которое имитирует отношение M: M между фактом и справочной таблицей кодирования. Это был бы предпочтительный подход с SSAS.
Преимущества варианта 1:
- При соответствующей индексации запросы, основанные на выборе строк таблицы фактов с определенным отношением в таблице M: M, могут быть достаточно эффективными.
- Чуть проще концептуальная модель
Преимущества варианта 2:
- Хранение данных более компактно
- Вы можете эмулировать прямое отношение 1: M, представляя комбинации в удобочитаемом формате в виде кода в измерении «комбинации». Это может быть более полезным для инструментов создания отчетов, которые не поддерживают отношения M: M.
Сценарий 2: отношение M: M между измерениями:
Труднее придумать вариант использования, но можно было бы снова предусмотреть что-то из здравоохранения с помощью кодов ICD. В системе анализа затрат посещение в стационаре может стать измерением, и оно будет иметь отношения M: M между посещением (или эпизодом консультанта в NHS-говорить) и кодировками.
В этом случае вы можете установить отношения M: M и, возможно, систематизировать удобочитаемую визуализацию их в базовом измерении. Отношения могут быть сделаны через прямые таблицы связей M: M или через таблицу «комбинаций» мостов, как и раньше. Эта структура данных может быть правильно запрошена через Business Objects или инструменты ROLAP лучшего качества.
Вдобавок ко всему, я не могу видеть, как SSAS может потреблять это, не сводя отношения прямо к таблице фактов, поэтому вам необходимо представить представление о соотношении M: M между кодированием и таблицей фактов. строки для использования SSAS с этими данными.