Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
- 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:
- WITH DeviceHierarchyCTE AS (
- SELECT
- device_id,
- device_hierarchy,
- device_id AS hierarchy_path,
- CAST(device_id AS NVARCHAR(MAX)) AS device_path,
- 1 AS hierarchy_level
- FROM
- Renewable_Energy_Devices
- WHERE
- device_hierarchy = HIERARCHYID::GetRoot()
- UNION ALL
- SELECT
- red.device_id,
- red.device_hierarchy,
- dhc.hierarchy_path.GetDescendant(red.device_hierarchy, NULL),
- dhc.device_path + ' > ' + red.device_id,
- dhc.hierarchy_level + 1
- FROM
- Renewable_Energy_Devices AS red
- INNER JOIN
- DeviceHierarchyCTE AS dhc ON dhc.device_hierarchy.IsDescendantOf(red.device_hierarchy) = 1
- )
- SELECT
- device_id,
- device_hierarchy.ToString() AS hierarchy_path,
- device_path,
- hierarchy_level
- FROM
- DeviceHierarchyCTE
- ORDER BY
- hierarchy_path;
- Korzyści ze stosowania typu danych "hierarchyid" obejmują:
- Wygodne przechowywanie hierarchii: Dzięki typowi danych "hierarchyid" można łatwo przechowywać i zarządzać hierarchicznymi strukturami danych w tabelach.
- 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.
- 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.
- 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