Advertisement
JanuszKowalski123

10. hierarchyid

May 9th, 2024
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.33 KB | None | 0 0
  1. Typ danych "hierarchyid" w SQL Serverze jest używany do przechowywania hierarchicznych struktur danych, takich jak drzewa czy grafy. Jest to szczególnie przydatne, gdy chcemy reprezentować hierarchię w danych, na przykład organizacyjną strukturę firmy, drzewo genealogiczne, strukturę produktów w sklepie internetowym itp.
  2.  
  3. Przykład zapytania wykorzystującego typ danych "hierarchyid" może być na przykład zapytanie rekurencyjne, które wyświetla całą hierarchię urządzeń w tabeli Renewable_Energy_Devices. Przykładowe zapytanie:
  4.  
  5. WITH DeviceHierarchyCTE AS (
  6.     SELECT
  7.         device_id,
  8.         device_hierarchy,
  9.         device_id AS hierarchy_path,
  10.         CAST(device_id AS NVARCHAR(MAX)) AS device_path,
  11.         1 AS hierarchy_level
  12.     FROM
  13.         Renewable_Energy_Devices
  14.     WHERE
  15.         device_hierarchy = HIERARCHYID::GetRoot()
  16.  
  17.     UNION ALL
  18.  
  19.     SELECT
  20.         red.device_id,
  21.         red.device_hierarchy,
  22.         dhc.hierarchy_path.GetDescendant(red.device_hierarchy, NULL),
  23.         dhc.device_path + ' > ' + red.device_id,
  24.         dhc.hierarchy_level + 1
  25.     FROM
  26.         Renewable_Energy_Devices AS red
  27.     INNER JOIN
  28.         DeviceHierarchyCTE AS dhc ON dhc.device_hierarchy.IsDescendantOf(red.device_hierarchy) = 1
  29. )
  30. SELECT
  31.     device_id,
  32.     device_hierarchy.ToString() AS hierarchy_path,
  33.     device_path,
  34.     hierarchy_level
  35. FROM
  36.     DeviceHierarchyCTE
  37. ORDER BY
  38.     hierarchy_path;
  39.  
  40.  
  41. Korzyści ze stosowania typu danych "hierarchyid" obejmują:
  42.  
  43. Wygodne przechowywanie hierarchii: Dzięki typowi danych "hierarchyid" można łatwo przechowywać i zarządzać hierarchicznymi strukturami danych w tabelach.
  44. Wydajność zapytań: Typ danych "hierarchyid" dostarcza wbudowanych funkcji i metod, które umożliwiają wydajne wykonywanie operacji na hierarchiach, takich jak wyświetlanie wszystkich elementów potomnych danego węzła, znajdowanie poziomu w hierarchii itp.
  45. Ograniczona redundancja danych: Hierarchia jest reprezentowana jako ścieżka węzłów, co pozwala uniknąć nadmiernego powielania danych w przypadku wielokrotnego występowania tych samych elementów w różnych miejscach hierarchii.
  46. Możliwość tworzenia zaawansowanych zapytań rekurencyjnych: Typ danych "hierarchyid" wspiera tworzenie zapytań rekurencyjnych, co ułatwia wykonywanie zaawansowanych operacji na hierarchiach.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement