Jeg går ud fra dine tags og titel, at du leder efter en løsning, der fungerer med MySQL .
Ja, du har ret i, at medmindre du kender antallet af elementer på forhånd, er værdien for right
skal beregnes dynamisk. Der er to tilgange, du kan bruge:
- Du kan starte med den mindste værdi, der virker (2 i dette tilfælde) og øge den senere efter behov.
- Du kan bare gætte 10000000 og håbe, at det er nok, men du skal være forberedt på muligheden for, at det ikke var nok og måske skal justeres igen senere.
I begge tilfælde skal du implementere det left
og right
værdier for flere rækker skal muligvis justeres, når du indsætter nye rækker, men i det andet tilfælde skal du faktisk kun udføre opdateringerne, hvis dine gæt var forkerte. Så den anden løsning er mere kompleks, men kan give bedre ydeevne.
Bemærk, at af de fire almindelige måder at gemme arvedata på, er tilgangen med indlejrede sæt den sværeste til at udføre indsættelser og opdateringer. Se slide 69 af Bill Karwins Modeller for Heirarchical Data .