Опубликован: 20.12.2010 | Уровень: специалист | Доступ: свободно
Лекция 8:

Метод многомерного моделирования

Вырожденные измерения

Вырожденным измерением (Degenerate Dimension) называется ключ в таблице фактов, по которому не производится соединение с таблицей, поскольку все связанные с этим ключом атрибуты размещаются в других измерениях. Это измерение без атрибутов. Обычно вырожденное измерение представлено атрибутами ключа измерения в таблице фактов без соответствующей таблицы измерений.

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

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

Пример вырожденного измерения

увеличить изображение
Рис. 9.18. Пример вырожденного измерения

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

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

Значения вырожденных измерений, как правило, уникальны и имеют небольшие размеры. Однако если будет использован суррогатный ключ, скажем, для экономии памяти, или если идентификатор учетной системы выражен длинной строкой, то измерение уже не является вырожденным.

Один из практических критериев идентификации вырожденных измерений (на этапе эксплуатации) — наличие таблиц измерений, кардинальность которых растет пропорционально кардинальности таблиц фактов. Такие таблицы измерений следует сделать вырожденными измерениями.

Иерархии измерений

Иерархией называется взаимосвязанный набор отношений "многие к одному", состоящий из последовательности уровней. Например, иерархия "Регион" определяется уровнями "Область", "Район", "Город". Иначе говоря, иерархия является спецификацией уровней, которые представляют взаимосвязи между различными атрибутами в иерархии. Как правило, иерархии обогащают семантику взаимоотношений между данными в многомерной модели.

В многомерном моделировании различают три типа иерархий:

  • сбалансированные иерархии (Balanced hierarchy);
  • несбалансированные иерархии (Unbalanced hierarchy);
  • иерархии с пропущенными уровнями (Ragged hierarchy).

Сбалансированная иерархия – это иерархия, в которой все ветви измерения имеют одно и то же количество уровней. Например, иерархия "Год" — "Квартал" —"Месяц". Каждый уровень имеет один и тот же тип и логически эквивалентен.

Сбалансированная иерархия состоит из фиксированного числа уровней. Число атрибутов в таблице измерения соответствует числу уровней в иерархии. На рис. 9.19 приведен пример сбалансированной иерархии "Даты".

Пример сбалансированной иерархии

Рис. 9.19. Пример сбалансированной иерархии

Таблица измерения может иметь несколько иерархий. Например, в таблицу измерения на рис. 9.19 можно добавить атрибуты иерархии "Финансовый год" "Финансовый квартал" — "Финансовый месяц".

Несбалансированная иерархия – это иерархия, в которой все ветви измерения имеют различное число уровней. Измерение типа "родитель-потомок" является примером несбалансированной иерархии. Примером несбалансированной иерархии может быть организационная структура организации: "Директор" — "Заместители директора" — "Отделы" — "Лаборатории" – "Группы".

Общим подходом при моделировании взаимосвязей "родитель-потомок" в реляционных БД является введение ключа сущности потомка в сущность родителя. Этот ключ называется рекурсивным указателем (recursive pointer). Пример моделирования приведен на рис. 9.20. Атрибут "Номер руководителя" является рекурсивным указателем, который указывает на "Номер сотрудника".

Пример несбалансированной иерархии

Рис. 9.20. Пример несбалансированной иерархии

Структура, приведенная на рис. 9.20, не работает для некоторых запросов. Предположим, что нам нужно показать суммарный доход с продаж сотрудника с номером 2. Если сотруднику с номером 2 подчинены сотрудники с номерами 5, 4, 7, то нам нужно показать суммарный доход с продаж, полученный от сотрудников с номерами 2, 5, 4, 7. Как правило, при использовании предложения GROUP BY одного оператора SELECT невозможно провести суммирование вниз по уровням иерархии. Для разрешения этой ситуации используется вспомогательная таблица-мост, как показано на рис. 9.21.

Пример использования таблицы-моста в отношении "родитель-потомок"

увеличить изображение
Рис. 9.21. Пример использования таблицы-моста в отношении "родитель-потомок"

Таблицей-мостом называется вспомогательная таблица, которая предназначена упростить работу с рекурсивными отношениями, отношениями "многие ко многим", отношениями типа иерархии при использовании реляционной модели данных.

Рассмотрим, как работает таблица-мост. Таблица измерений "Сотрудники" имеет по одной строке на каждого сотрудника на любом уровне иерархии. Она содержит по одной строке для каждого пути в дереве иерархии — т.е. таблица-мост содержит одну строку для каждого пути иерархии от служащего к подчиненному ему служащему, а также строку, содержащую ссылку от служащего на самого себя. Кроме этого, таблица-мост содержит номер уровня иерархии (количество уровней между родителем и потомком в отношении), флажок "вниз", который указывает, что данный служащий находится на самом нижнем уровне иерархии, и флажок "вверх", который указывает, что он на самом верхнем уровне иерархии.

Таблица-мост может участвовать в операции соединения таблицы измерения "Сотрудники" и таблицы фактов "Продажи" двумя способами. При движении по иерархии вниз таблица фактов посредством ключа "Номер сотрудника" соединяется с таблицей-мостом по ключу "Номер сотрудника потомка", а таблица измерения "Сотрудники" посредством ключа "Номер сотрудника" соединяется с таблицей-мостом "Номер сотрудника родителя". Поле "Номер уровня" определяет глубину движения по иерархии. Поле "Флажок вниз" говорит, что достигнут самый низкий уровень несбалансированной иерархии. При движении вверх по иерархии таблица фактов посредством ключа "Номер сотрудника" соединяется с таблицей-мостом по ключу "Номер сотрудника родителя", а таблица измерения "Сотрудники" посредством ключа "Номер сотрудника" соединяется с таблицей-мостом "Номер сотрудника потомка". Поле "Номер уровня" также определяет глубину движения по иерархии. Поле "Флажок вверх" говорит, что достигнут самый высокий уровень несбалансированной иерархии.

Заметим, что использование таблиц-мостов усложняет как проектирование модели данных, так и ее последующее сопровождение. Для сопровождения таких таблиц, как правило, приходится разрабатывать пакеты из хранимых процедур.

Иерархией с пропущенными уровнями (Ragged hierarchy) называется такая иерархия, в которой допускается отсутствие одного из уровней при заполнении ее данными, т.е. различные варианты иерархии сохраняются в одной структуре данных.

Рассмотрим таблицу измерений "Месторасположение" на рис. 9.22, которая представляет географическое расположение населенных пунктов.

Пример структуры данных для реализации иерархии с пропущенными уровнями

Рис. 9.22. Пример структуры данных для реализации иерархии с пропущенными уровнями

Например, для населенных пунктов в Российской федерации заполнение таблицы измерений может быть следующим.

  • Для большинства населенных пунктов Московской области будет иметь вид:
    "Континент" = Евразия
    "Страна" = Российская федерация
    "Область" = Московская область
    "Район" = Ногинский район
    "Город" = Купавна
  • Для городов областного подчинения поле "Район" будет незаполненным:
    "Континент" = Евразия
    "Страна" = Российская федерация
    "Область" = Московская область
    "Район" = NULL
    "Город" = Черноголовка
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?