Skip to main content

¿Qué es el modelo de conjunto anidado?

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 de lo 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, realizar inserciones, eliminaciones, movimientos y actualizaciones son mucho más engorrosos porque pueden implicar renumerar los nodos.

Normalmente utilizado para representar conjuntos anidados o información jerárquica en forma de árboles, Joe Celko introdujo el modelo de conjuntos anidados. Un árbol, en este caso, es una estructura de datos que contiene varios nodos vinculados. Por ejemplo, un nodo primario puede conectarse a varios nodos secundarios, y esta estructura se repite a través del á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 se pueden subdividir en bayas, melones y manzanas y verduras en tubérculos, verduras y otros, y la carne en carne de 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 de árbol se gestione de manera eficiente. Usando el ejemplo anterior, el nodo raíz sería alimento, que está representado por dos valores. Dado el valor izquierdo para alimentos como 1, a los otros elementos del árbol se les asigna un número a 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, trabajando todo el camino a través del árbol, de abajo hacia arriba, a través de cada rama hasta que se asigna el último valor a los alimentos en el lado derecho.

Cada elemento en el árbol termina con dos valores, digamos lft para izquierda y rgt para derecha, que pueden usarse 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 han dejado valores superiores a 2 y valores correctos inferiores a 15 son descendientes del árbol frutal 2–15. Se hace fácil extraer información de todas las frutas de una 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 reordenación de información en el modelo de conjunto anidado se vuelven muy tediosas. Reescribir índices y renumerar 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 sistemas de administració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 utilizando decimales de punto flotante y al mismo tiempo codifica la información de ruta.