От вашите тагове и заглавие предполагам, че търсите решение, което работи с MySQL .
Да, прав сте, освен ако не знаете предварително броя на елементите, стойността за right
трябва да се изчислява динамично. Има два подхода, които можете да използвате:
- Можете да започнете с най-ниската стойност, която работи (2 в този случай) и да я увеличите по-късно, ако е необходимо.
- Можете просто да направите предположение като 10000000 и да се надявате, че това е достатъчно, но трябва да сте подготвени за възможността, че не е било достатъчно и може да се наложи да коригирате отново по-късно.
И в двата случая трябва да приложите това left
и right
стойностите за множество редове може да се наложи да се коригират при вмъкване на нови редове, но във втория случай всъщност трябва да извършите актуализациите само ако вашите предположения са били грешни. Така че второто решение е по-сложно, но може да даде по-добра производителност.
Имайте предвид, че от четирите често срещани начина за съхранение на иерархични данни подходът на вложените множества е най-трудният за извършване на вмъквания и актуализации. Вижте слайд 69 от Модели за иерархични данни на Бил Карвин .