El modelo de conjunto anidado también se conoce como el algoritmo de recorrido de árbol de preorden modificado y es una forma de almacenar datos jerárquicos dentro de bases de datos relacionales. Este modelo tiene la ventaja de proporcionar un acceso muy rápido y se implementa mejor en jerarquías que se leen con más frecuencia que en las que se escribe. A cada nodo dentro del modelo de información se le asignan dos números que se almacenan como atributos. Consultar el modelo de conjunto anidado es bastante fácil porque ambos valores se pueden usar para extraer los datos necesarios. Sin embargo, hacer inserciones, eliminaciones, movimientos y actualizaciones es mucho más engorroso porque pueden implicar volver a numerar los nodos.
Normalmente utilizado para representar conjuntos anidados o información jerárquica en forma de árboles, el modelo de conjuntos anidados fue introducido por Joe Celko. Un árbol, en este caso, es una estructura de datos que contiene varios nodos vinculados. Por ejemplo, un nodo padre puede conectarse a varios nodos hijos, y esta estructura se repite en el árbol a través de varios niveles.
Los árboles son una excelente manera de almacenar información en un orden particular dentro de una base de datos relacional, que es un conjunto de datos que almacena datos en función de características comunes. Por ejemplo, la información del producto dentro de la sección de alimentos de una tienda puede comenzar con alimentos, ramificándose en frutas, verduras y carne. Las frutas pueden subdividirse además en bayas, melones y manzanas y las verduras en tubérculos, verduras y otros, y la carne en cerdo, cordero y ternera.
Una base de datos relacional almacena toda esta información en una forma fácil de entender, y un modelo de conjunto anidado permite que la estructura del árbol se administre de manera eficiente. Usando el ejemplo anterior, el nodo raíz sería alimento, que está representado por dos valores. Dado el valor de la izquierda para los alimentos como 1, a los otros elementos del árbol se les asigna un número en la izquierda en orden. Las frutas obtendrían un valor de 2 a la izquierda, las bayas serían 3, y así sucesivamente. Luego, los valores se asignan en el lado derecho, recorriendo todo el árbol, de abajo hacia arriba, a través de cada rama hasta que se asigne el último valor a los alimentos en el lado derecho.
Cada elemento del árbol termina con dos valores, digamos lft para la izquierda y rgt para la derecha, que se pueden usar para identificarlos e indicar su relación con otros elementos. Por ejemplo, si las frutas tienen un valor de 2 y 15, entonces todos los nodos que tienen valores a la izquierda mayores que 2 y valores a la derecha menores que 15 son descendientes del árbol frutal 2-15. Es fácil extraer información sobre todas las frutas de una sola vez porque estos valores se pueden especificar en una sola consulta a la base de datos.
Este modelo es excelente para almacenar información a la que se accede con frecuencia, pero las inserciones, eliminaciones y reordenar información en el modelo de conjunto anidado se vuelven muy tediosas. Reescribir índices y volver a numerar la información puede hacer que la base de datos se bloquee, especialmente si el árbol crece para incluir cientos de miles de nodos. El modelo de conjunto anidado es el mejor para los sistemas de gestión de contenido ligero que tienen inserciones y cambios mínimos. Las inserciones se pueden hacer mucho más rápido en el modelo de intervalo anidado porque almacena la posición de cada nodo en el árbol usando decimales de punto flotante mientras también codifica la información de la ruta.