Вложени комплекти. Въведение

Какво е?

Не е необходимо да повдигате въпроса за проблемите със съхраняването на дървета в SQL бази данни, просто кажете, че те съществуват.

Един от методите за съхраняване на дървесни структури е вложените набори.

На първо място, нека видим как изглеждат дърветата с вложени комплекти, как са организирани и какво е удобството при тяхното използване.

комплекти

Диаграмата показва дърво, описано съгласно всички правила на метода на вложени набори. Квадратите представляват дървесните възли, сините числа в горния десен и горния ляв ъгъл на възела са съответно ниво и уникален идентификатор, а червените числа в долните ъгли са левия и десния бутон. Именно в тези две числа - левия и десния бутон се съдържа цялата информация за дървото. И ако информацията за ключовете се въведе в базата данни, тогава работата с дървото е много по-лесна. Обърнете внимание на реда, в който са поставени тези клавиши. Ако мислено вървите от 1 до 32, тогава ще заобиколите всички възли на дървото отляво надясно. Всъщност това е пътят на обхождане на всички възли на дървото отляво надясно.

Използването на такава дървовидна структура на директорията значително опростява избора на определени елементи, като клон родител, подчинени възли, като цяло целия „клон“, в който нашият възел участва. Като цяло всичко е много по-лесно да се види на практика:

Нека създадем таблица, в която ще съхраним нашето дърво (1):

  • left_key - Левият ключ на възела. Показва произхода на клона. Това е и поле за сортиране на дървета;
  • right_key - Десният клавиш на възела. Показва точка на прекъсване в края на клон. Използва се и за преброяване на дъщерните възли на клон;
  • ниво - Нивото на възела. Той също така показва броя на родителите на възела;

Как да използвам?

Сега нека определим какви данни можем да изберем от него (таблица):

1. Самото дърво (2):

В резултат на това, след малко обработка (при което нивото играе ролята на умножител на отстъпи), получаваме следния списък:

2. Избор на подчинени възли (за началния възел вземете клавишите [Node 7] [left_key], [right_key] и ниво [level]) (3):