| Termin | Definicja |
|---|---|
| HierarchyID | HierarchyID to typ danych SQL Server umożliwiający efektywne przechowywanie i przetwarzanie struktur hierarchicznych. Typ hierarchyid i zapis położenia w drzewiehierarchyid to systemowy typ danych dostępny w Microsoft SQL Server, przeznaczony do reprezentowania pozycji w hierarchii, czyli relacji nadrzędny–podrzędny. Wartość tego typu opisuje drogę od korzenia do konkretnego węzła. Przykładowo zapis hierarchyid jest typem CLR systemu SQL Server, ale korzysta się z niego w tabeli jak z kolumny danych. Nie narzuca automatycznie unikalności ani relacji klucza obcego pomiędzy węzłami. To oznacza, że projekt tabeli musi osobno określać, czy wartości mają być unikalne, czy każdy węzeł musi mieć istniejącego rodzica oraz jak mają być przechowywane atrybuty opisujące obiekt. Sama kolumna hierarchyid nie zastępuje identyfikatora biznesowego, nazwy, opisu ani innych danych rekordu. Metody wyznaczania rodziców, dzieci i potomkówSQL Server udostępnia dla hierarchyid metody pozwalające odczytywać i budować relacje w drzewie. Porównywanie wartości hierarchyid ma znaczenie przy sortowaniu i wyszukiwaniu poddrzew. Metoda Przy dodawaniu rekordu aplikacja lub procedura składowana musi ustalić jego pozycję w drzewie. Zwykle pobiera się wartość rodzica, a następnie wywołuje Indeksy, sortowanie i konsekwencje zmiany strukturyKolumnę hierarchyid można indeksować, a sposób indeksowania powinien odpowiadać dominującym zapytaniom. Indeks klastrowany według hierarchyid może grupować rekordy w kolejności zbliżonej do porządku drzewa, dzięki czemu odczyt węzła wraz z jego potomkami może być efektywny. Indeks nie zapewnia jednak sam z siebie poprawności hierarchii. Jeżeli wymagane jest, aby dwa rekordy nie miały tej samej pozycji, potrzebne jest ograniczenie unikalności albo inny mechanizm kontroli po stronie bazy. Wartość hierarchyid jest zmienna pod względem długości zapisu. Jej rozmiar zależy od liczby poziomów oraz sposobu numerowania elementów ścieżki, dlatego bardzo głębokie drzewa i częste wstawianie elementów pomiędzy istniejące węzły wymagają testów na rzeczywistych danych. Metoda hierarchyid jest odpowiedni dla danych naturalnie hierarchicznych, takich jak struktura organizacyjna, katalog kategorii albo drzewo elementów. Nie jest natomiast uniwersalnym mechanizmem dla każdego rodzaju grafu. Wartość opisuje jedną ścieżkę w drzewie, a nie dowolną liczbę relacji między węzłami. Jeżeli obiekt może mieć wielu rodziców, relacje cykliczne albo niezależne krawędzie, model oparty wyłącznie na hierarchyid nie odwzoruje tych zależności. Przy projektowaniu tabeli trzeba także zdefiniować zachowanie podczas usuwania rodzica, przenoszenia gałęzi i równoczesnego dodawania dzieci. Kontrola danych hierarchyid w środowisku SQL ServerDiagnostyka problemów z hierarchyid obejmuje sprawdzenie typu kolumny, wartości ścieżek, indeksów oraz zapytań wykonujących operacje na drzewie. Należy zweryfikować, czy wartości są poprawnie parsowane, czy nie występują niezamierzone duplikaty oraz czy rekordy posiadają oczekiwanych przodków. Przy analizie wolnego zapytania trzeba sprawdzić plan wykonania i selektywność indeksu, ponieważ samo zastosowanie typu hierarchyid nie gwarantuje użycia indeksu ani krótkiego czasu odpowiedzi. Podczas przenoszenia węzła kontrola powinna objąć całą gałąź. Zmiana ścieżki rodzica bez przeliczenia wartości potomków pozostawia niespójny model logiczny: rekordy nadal będą miały stare ścieżki, więc zapytania wykorzystujące W przypadku problemów z aplikacją korzystającą z SQL Server warto rozdzielić błąd danych od błędu kodu. Niepoprawna wartość w kolumnie może wynikać z błędnego wyznaczenia rodzica, pominięcia kontroli unikalności, nieprawidłowego sortowania dzieci albo niepełnej migracji poddrzewa. Analiza powinna obejmować definicję tabeli, procedury i zapytania odczytujące hierarchyid, a także rzeczywiste wartości zapisane w bazie. Takie podejście pozwala ustalić, czy problem dotyczy struktury hierarchii, indeksowania, czy jedynie prezentacji ścieżki w aplikacji. |