Uit je tags en titel maak ik op dat je op zoek bent naar een oplossing die werkt met MySQL .
Ja, je hebt gelijk, tenzij je het aantal elementen van tevoren weet, de waarde voor right
dynamisch moet worden berekend. Er zijn twee benaderingen die u kunt gebruiken:
- Je zou kunnen beginnen met de minste waarde die werkt (2 in dit geval) en deze later indien nodig verhogen.
- Je zou gewoon 10000000 kunnen raden en hopen dat dat genoeg is, maar je moet voorbereid zijn op de mogelijkheid dat het niet genoeg is en dat je het later misschien weer moet aanpassen.
In beide gevallen moet u implementeren dat de left
en right
waarden voor meerdere rijen moeten mogelijk worden aangepast bij het invoegen van nieuwe rijen, maar in het tweede geval hoeft u de updates alleen daadwerkelijk uit te voeren als uw gissingen verkeerd waren. De tweede oplossing is dus complexer, maar kan betere prestaties opleveren.
Merk op dat van de vier gebruikelijke manieren om hiërarchische gegevens op te slaan, de benadering met geneste sets de moeilijkste is om invoegingen en updates uit te voeren. Zie dia 69 van Bill Karwin's Modellen voor hiërarchische gegevens .