Ł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.
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.
Przykład:
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.