Ładowanie danych hierarchii

Niezrównoważone hierarchie n-poziomowe często służą na przykład do reprezentowania w danych wymiarów geograficznych lub organizacyjnych. Hierarchie tego typu są zazwyczaj zapisywane w postaci tabeli węzłów sąsiadujących, w której każdy rekord odpowiada jednemu węzłowi, a jedno z pól stanowi odniesienie do węzła nadrzędnego.

Tabela węzłów
NodeID ParentNodeID Title
1 - General manager
2 1 Region manager
3 2 Branch manager
4 3 Department manager

W takiej tabeli każdy węzeł jest zapisany tylko w jednym rekordzie, ale mimo to może mieć dowolną liczbę węzłów podrzędnych. Tabela może oczywiście zawierać dodatkowe pola opisujące atrybuty węzłów.

Tabela węzłów sąsiadujących jest optymalną strukturą z punktu widzenia utrzymania danych, ale korzystanie z niej jest niewygodne. Na potrzeby zapytań i analiz używane są inne reprezentacje. Często stosowaną reprezentacją jest tabela rozwiniętych węzłów, w której każdy poziom hierarchii jest zapisany w odrębnym polu. Poszczególnych poziomów tabeli węzłów sąsiadujących można w prosty sposób używać na przykład w ramach struktury drzewiastej. Aby przekształcić tabelę węzłów sąsiadujących w tabelę węzłów rozwiniętych, należy użyć w skrypcie ładowania danych słowa kluczowego hierarchy.

Example:  

Hierarchy (NodeID, ParentNodeID, Title, 'Manager') LOAD NodeID, ParentNodeID, Title FROM 'lib://data/hierarchy.txt' (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
Tabela węzłów rozwiniętych
NodeID ParentNodeID Tytuł 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

Tabela węzłów rozwiniętych jest jednak niewygodna w przypadku używania pól poziomów w wyszukiwaniach i selekcjach, gdyż konieczna jest wcześniejsza znajomość poziomu, którego będzie dotyczyć wyszukiwanie lub selekcja. Problem ten rozwiązuje jeszcze inna reprezentacja: tabela węzłów nadrzędnych. Inna nazwa tej reprezentacji to tabela pomostowa.

Tabela węzłów nadrzędnych zawiera jeden rekord dla każdej występującej w danych relacji podrzędny-nadrzędny. Znajdują się w niej klucze i nazwy elementów podrzędnych i nadrzędnych. Oznacza to, że każdy rekord wskazuje węzeł nadrzędny danego węzła. Aby przekształcić tabelę węzłów sąsiadujących w tabelę węzłów nadrzędnych, należy w skrypcie ładowania danych użyć słowa kluczowego hierarchybelongsto.

See also: