Vous mentionnez le plus couramment implémenté, qui est la liste de contiguïté:
https://blogs.msdn.microsoft.com/mvpawardprogram/2012/06/25/hierarchies-convert-adjacency-list-to-nested-sets
Il existe également d'autres modèles, notamment des chemins matérialisés et des ensembles imbriqués:
http://communities.bmc.com/communities/docs/DOC-9902
Joe Celko a écrit un livre sur ce sujet, qui est une bonne référence d'un point de vue SQL général (il est mentionné dans le lien de l'article imbriqué ci-dessus).
En outre, Itzik Ben-Gann a un bon aperçu des options les plus courantes dans son livre "Inside Microsoft SQL Server 2005: T-SQL Querying".
Les principaux éléments à prendre en compte lors du choix d'un modèle sont:
1) Fréquence du changement de structure - à quelle fréquence la structure réelle de l'arbre change. Certains modèles offrent de meilleures caractéristiques de mise à jour de la structure. Il est cependant important de séparer les changements de structure des autres changements de données. Par exemple, vous souhaiterez peut-être modéliser l'organigramme d'une entreprise. Certaines personnes modéliseront cela comme une liste de contiguïté, en utilisant l'ID d'employé pour lier un employé à son superviseur. Il s'agit généralement d'une approche sous-optimale. Une approche qui fonctionne souvent mieux consiste à modéliser la structure organisationnelle séparément des employés eux-mêmes, et à maintenir l'employé en tant qu'attribut de la structure. De cette façon, lorsqu'un employé quitte l'entreprise, la structure organisationnelle elle-même n'a pas besoin d'être modifiée, juste l'association avec l'employé qui est parti.
2) L'arbre est-il lourd en écriture ou en lecture - certaines structures fonctionnent très bien lors de la lecture de la structure, mais entraînent une surcharge supplémentaire lors de l'écriture dans la structure.
3) Quels types d'informations devez-vous obtenir de la structure? Certaines structures excellent à fournir certains types d'informations sur la structure. Les exemples incluent la recherche d'un nœud et de tous ses enfants, la recherche d'un nœud et de tous ses parents, la recherche du nombre de nœuds enfants remplissant certaines conditions, etc. Vous devez savoir quelles informations seront nécessaires à partir de la structure pour déterminer la structure qui conviendra le mieux vos besoins.