Вы упомянули наиболее часто реализуемый, который является списком смежности:
https://blogs.msdn.microsoft.com/mvpawardprogram/2012/06/25/hierarchies-convert-adjacency-list-to-nested-sets
Есть и другие модели, включая материализованные пути и вложенные множества:
http://communities.bmc.com/communities/docs/DOC-9902
Джо Селко (Joe Celko) написал книгу на эту тему, которая является хорошим справочным материалом с общей точки зрения SQL (она упоминается в ссылке на вложенный набор статей выше).
Кроме того, Ицик Бен-Ганн имеет хороший обзор наиболее распространенных вариантов в своей книге «Внутри Microsoft SQL Server 2005: запросы T-SQL».
Основные моменты, которые следует учитывать при выборе модели:
1) Частота изменения структуры - как часто изменяется фактическая структура дерева. Некоторые модели обеспечивают лучшие характеристики обновления структуры. Однако важно отделить структурные изменения от других изменений данных. Например, вы можете смоделировать организационную структуру компании. Некоторые люди будут моделировать это как список смежности, используя идентификатор сотрудника, чтобы связать сотрудника с его руководителем. Обычно это неоптимальный подход. Подход, который часто работает лучше, состоит в том, чтобы смоделировать структуру организации отдельно от самих сотрудников и сохранить сотрудника в качестве атрибута структуры. Таким образом, когда сотрудник уходит из компании, сама организационная структура не нуждается в изменениях, а только в связи с оставшимся сотрудником.
2) Является ли дерево плотным при записи или тяжелым при чтении - некоторые структуры работают очень хорошо при чтении структуры, но требуют дополнительных затрат при записи в структуру.
3) Какие типы информации вам нужно получить из структуры - некоторые структуры превосходно предоставляют определенные виды информации о структуре. Примеры включают в себя поиск узла и всех его дочерних элементов, поиск узла и всех его родителей, определение количества дочерних узлов, удовлетворяющих определенным условиям, и т. Д. Вам нужно знать, какая информация потребуется из структуры, чтобы определить структуру, которая будет наилучшим образом соответствовать твои нужды.