O que é o modelo de conjunto aninhado?
O modelo de conjunto aninhado também é conhecido como algoritmo de passagem em árvore de pré-encomenda modificada e é uma maneira de armazenar dados hierárquicos nos bancos de dados relacionais. Esse modelo tem a vantagem de fornecer acesso muito rápido e é melhor implementado em hierarquias que são lidas com mais frequência do que as gravadas. Cada nó no modelo de informações recebe dois números armazenados como atributos. Consultar o modelo de conjunto aninhado é bastante fácil, pois os dois valores podem ser usados para extrair os dados necessários. Fazer inserções, exclusões, movimentações e atualizações, no entanto, é muito mais complicado, pois pode envolver a renumeração dos nós.
Normalmente usado para representar conjuntos aninhados ou informações hierárquicas na forma de árvores, o modelo de conjunto aninhado foi introduzido por Joe Celko. Uma árvore, nesse caso, é uma estrutura de dados que contém vários nós vinculados. Por exemplo, um nó pai pode se conectar a vários nós filhos, e essa estrutura é repetida através da árvore por vários níveis.
As árvores são uma ótima maneira de armazenar informações em uma ordem específica em um banco de dados relacional, que é um conjunto de dados que armazena dados dependendo de características comuns. Por exemplo, as informações do produto na seção de alimentos de uma loja podem começar com alimentos, ramificando-se em frutas, legumes e carne. As frutas podem ainda ser subdivididas em bagas, melões e maçãs e vegetais em tubérculos, verduras e outros, e carne em carne de porco, carneiro e vitela.
Um banco de dados relacional armazena todas essas informações em um formato fácil de entender, e um modelo de conjunto aninhado permite que a estrutura da árvore seja gerenciada com eficiência. Usando o exemplo acima, o nó raiz seria alimento, que é representado por dois valores. Dado o valor esquerdo para comida como 1, os outros itens da árvore recebem um número à esquerda em ordem. As frutas receberiam um valor de 2 à esquerda, as frutas seriam 3 e assim por diante. Os valores são então atribuídos no lado direito, trabalhando por toda a árvore, de baixo para cima, através de cada ramo até o último valor ser atribuído aos alimentos no lado direito.
Cada item da árvore termina com dois valores, como lft para esquerda e rgt para direita, que podem ser usados para identificá-los e indicar sua relação com outros itens. Por exemplo, se os frutos tiverem o valor 2 e 15, todos os nós que tiverem valores maiores que 2 e valores certos menores que 15 serão descendentes da árvore frutífera 2–15. Torna-se fácil extrair informações de todas as frutas de uma só vez, porque esses valores podem ser especificados em uma única consulta no banco de dados.
Esse modelo é excelente para armazenar informações acessadas com frequência, mas inserções, exclusões e informações de reordenamento no modelo de conjunto aninhado se tornam muito entediantes. Reescrever índices e renumerar as informações pode causar uma falha no banco de dados, especialmente se a árvore aumentar para incluir centenas de milhares de nós. O modelo de conjunto aninhado é melhor para sistemas leves de gerenciamento de conteúdo que tenham inserções e alterações mínimas. As inserções podem ser feitas muito mais rapidamente no modelo de intervalo aninhado, porque armazena a posição de cada nó na árvore usando decimais de ponto flutuante e também codificando as informações do caminho.