HIERARCHICZNY TYP DANYCH
br>
Główną cechą, właściwością danych hierarchicznych są związki między danymi tego typu. Związki te polegają na tym, że jeden element jest nadrzędny lub podrzędny względem drugiego elementu. Relacje tego typu przyjęło się ogólnie nazywać relacją RODZIC – DZIECKO.
Relację taką najlepiej przedstawia poniższa ilustracja – odwrócone drzewo:

br>
Elementy struktury hierarchicznej:
● Rodzic (Parent)
● Dziecko (Child)
● Węzeł (Node)
● Korzeń (Root), nie posiadający rodzica
● Liście (Leaf), nie posiadające dzieci
br>
Najbardziej powszechne przykłady danych hierarchicznych:
● Cyfrowy system katalogów i plików
● Struktura organizacyjna firmy
● MLM (Multi Level Marketing) – marketing sieciowy, zwany marketingiem wielopoziomowym.
br>
Sposoby przechowywania danych hierarchicznych:
Dane hierarchiczne można przechowywać na kilka różnych sposobów w tabeli z kolumną:
● zawierającą wskaźnik na rekord nadrzędny. Rekord nadrzędny może być w tożsamej tabeli lub w odrębnej
● zawierającą ścieżkę definiującą pozycję elementu w hierarchii
● w formacie XML.
br>
Właściwości hierarchicznego typu danych:
● możliwość przechowywania pozycji węzłów w tzw. kanonicznej postaci tekstowej, czyli za pomocą liczb, kropek oraz ukośnika
● jest typem CLR (Common Language Runtime) i udostępnia sporo przydatnych metod (kod CLR jest omówiony w kursie na poziomie zaawansowanym)
● dane przechowywane są w postaci binarnej o zmiennej długości
● możliwość porównywania danych zarówno w pionie jak i w poziomie.
br>
Strategie indeksowania hierarchicznego typu danych:
● Według głębokości:

● Według szerokości:

br>
Metody HIERARCHYID: |
|
GetRoot() | Zwraca węzeł ROOT (korzeń). Nie przyjmuje żadnych argumentów. |
GetDescendant() | Zwraca węzeł podrzędny (NODE). Wymagane dwa argumenty. |
GetAncestor() | Zwraca węzeł nadrzędny (NODE). Wymagany jeden argument. |
GetLevel() | Zwraca całą strukturę wg węzłów nadrzędnych z bezpośrednimi podrzędnymi. Nie przyjmuje żadnych argumentów. |
IsDescendantOf() | Zwraca węzeł podrzędny. Wymagany jeden argument. |
GetReparentedValue() | Reorganizuje hierarchię. Wymagane dwa argumenty. |
br>
br>
PLIKI DO ŚCIĄGNIĘCIA:
1. 008_Hierarchiczny_Typ_Danych.sql
br>