Загрузка данных иерархии
Несбалансированные иерархии уровня n часто используются, в частности, для представления географических или организационных измерений в данных.
Такие типы иерархий, как правило, хранятся в таблицах смежных узлов, т. е. в таблицах, в которых каждая запись соответствует узлу и имеет поле, содержащее ссылку на родительский узел.
NodeID | ParentNodeID | Title |
---|---|---|
1 | - | General manager |
2 | 1 | Region manager |
3 | 2 | Branch manager |
4 | 3 | Department manager |
В таких таблицах узел хранится в одной записи, но может иметь любое число дочерних узлов. В таблице могут содержаться дополнительные поля, описывающие атрибуты для узлов.
Таблица смежных узлов отличается простотой обслуживания, однако ее трудно использовать для повседневных операций. Вместо нее в запросах и анализах используются другие представления. В таблицах развернутых узлов существует одно общее представление, в котором каждый уровень иерархии хранится в отдельном поле. Уровни в таблицах расширенных узлов удобно использовать, например, в структуре дерева. Ключевое слово hierarchy можно использовать в скрипте загрузки данных для преобразования таблицы смежных узлов в таблицу расширенных узлов.
Пример:
NodeID | ParentNodeID | Title | Title1 | Title2 | Title4 | Title4 |
---|---|---|---|---|---|---|
1 | - | General manager | General manager | - | - | - |
2 | 1 | Region manager | General manager | Region manager | - | - |
3 | 2 | Branch manager | General manager | Region manager | Branch manager | - |
4 | 3 | Department manager | General manager | Region manager | Branch manager | Department manager |
Проблема с таблицами расширенных узлов заключается в том, что поля уровней неудобно использовать для поиска или выборки, так как для этого необходимо заранее знать уровень, на котором будет осуществляться поиск или выборка. Таблица предков представляет собой другое представление, позволяющее избежать подобных проблем. Это представление также называется таблицей пересчета.
Таблица предков содержит одну запись для каждой связи дочерний-родительский элемент в данных. Она содержит ключи и имена дочерних и родительских элементов. Таким образом, каждая запись указывает узел, к которому принадлежит определенный узел. Ключевое слово hierarchybelongsto может использоваться в скрипте загрузки данных для преобразования таблицы смежных узлов в таблицу предков.