Usted menciona la aplican con mayor frecuencia, que es lista de adyacencia: https://blogs.msdn.microsoft.com/mvpawardprogram/2012/06/25/hierarchies-convert-adjacency-list-to-nested-sets
Hay otros modelos, así, como camino materializado y conjuntos anidados: http://communities.bmc.com/communities/docs/DOC-9902
Joe Celko ha escrito un libro sobre este sujeto, que es una buena referencia desde una perspectiva general de SQL (se menciona en el enlace del artículo conjunto anidado más arriba).
Además, Itzik Ben-Gann tiene una buena descripción de las opciones más comunes en su libro "Dentro de Microsoft SQL Server 2005: consultas T-SQL".
Los principales aspectos a considerar al elegir un modelo son:
1) Frecuencia de cambio de estructura - ¿Con qué frecuencia la estructura real del cambio árbol. Algunos modelos proporcionan mejores características de actualización de estructura. Sin embargo, es importante separar los cambios de estructura de otros cambios de datos. Por ejemplo, es posible que desee modelar el organigrama de una empresa. Algunas personas modelarán esto como una lista de adyacencia, utilizando la identificación del empleado para vincular a un empleado con su supervisor. Este suele ser un enfoque subóptimo. Un enfoque que a menudo funciona mejor es modelar la estructura organizativa por separado de los propios empleados, y mantener al empleado como un atributo de la estructura. De esta forma, cuando un empleado abandona la empresa, la estructura organizativa en sí misma no necesita cambios, solo la asociación con el empleado que se fue.
2) ¿El árbol es pesado o pesado para leer? Algunas estructuras funcionan muy bien al leer la estructura, pero incurren en gastos adicionales al escribir en la estructura.
3) ¿Qué tipos de información necesita obtener de la estructura? Algunas estructuras se destacan por proporcionar ciertos tipos de información sobre la estructura. Los ejemplos incluyen encontrar un nodo y todos sus elementos secundarios, encontrar un nodo y todos sus padres, encontrar el recuento de nodos secundarios que cumplan ciertas condiciones, etc.Necesita saber qué información se necesitará de la estructura para determinar la estructura que mejor se adapte a sus necesidades.
Ver: [¿Cuáles son las opciones para almacenar datos jerárquicos en una base de datos relacional?] (Http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in -a-relational-database) – cbare
SQL Server (desde 2008) ofrece el [tipo de datos hierarchyid] (https://msdn.microsoft.com/en-us/library/bb677290.aspx) – BornToCode