Model zestawu zagnieżdżonego nie jest obecnie powszechnie stosowany w bazach danych, ponieważ jest bardziej złożony niż model listy adiacency, biorąc pod uwagę fakt, że wymaga zarządzania dwoma „wskaźnikami” zamiast jednym. W rzeczywistości model zestawu zagnieżdżonego został wprowadzony do baz danych, gdy wykonanie zapytań rekurencyjnych, które przeszło hierarchię, było złożone lub niemożliwe.
Od 1999 roku standardowy SQL zawiera tak zwane Recursive Common Table Expressions lub Recursive CTE, które upraszczają (i standaryzują!) tworzenie zapytań przechodzących przez ścieżki rekurencyjne w hierarchii z dowolną liczba poziomów.
Wszystkie główne systemy DBMS mają teraz tę funkcję, ze szczególnym wyjątkiem:MySQL. Ale w MySQL możesz rozwiązać ten problem za pomocą procedur składowanych. Zobacz na przykład ten post na StackOverflow lub ten post na dba.stackexchange .
Podsumowując, oto moje rady:
- Jeśli nadal możesz zdecydować, którego DBMS użyjesz, rozważ zdecydowanie kilka alternatyw:na przykład, jeśli chcesz pozostać przy bazie danych o otwartym kodzie źródłowym, użyj PostgreSQL , użyj modelu listy adiacencji i skorzystaj z rekurencyjnych CTE dla swoich zapytań.
- Jeśli nie możesz zmienić DBMS, nadal powinieneś skorzystać z modelu listy adiacency i użyć procedur składowanych, jak te cytowane w odnośnikach.
AKTUALIZUJ
Ta sytuacja zmienia się wraz z MySQL 8, który jest obecnie w fazie rozwoju i który zintegruje rekurencyjne CTE , dzięki czemu od tej wersji Model listy Adiacency będzie prostszy w użyciu.