Presumo dai tag e dal titolo che stai cercando una soluzione che funzioni con MySQL .
Sì, hai ragione che, a meno che tu non conosca il numero di elementi in anticipo, il valore di right
deve essere calcolato dinamicamente. Ci sono due approcci che puoi usare:
- Puoi iniziare con il valore minimo che funziona (2 in questo caso) e aumentarlo in seguito secondo necessità.
- Potresti semplicemente fare un'ipotesi come 10000000 e sperare che sia abbastanza, ma devi essere preparato alla possibilità che non sia stato sufficiente e potrebbe essere necessario aggiustarlo di nuovo in seguito.
In entrambi i casi è necessario implementare che il left
e right
i valori per più righe potrebbero dover essere modificati quando si inseriscono nuove righe, ma nel secondo caso è necessario eseguire gli aggiornamenti solo se le ipotesi erano sbagliate. Quindi la seconda soluzione è più complessa, ma può fornire prestazioni migliori.
Tieni presente che dei quattro modi comuni per archiviare i dati gerarchici, l'approccio degli insiemi nidificati è il più difficile per eseguire inserimenti e aggiornamenti. Vedi la diapositiva 69 dei Modelli per i dati gerarchici di Bill Karwin .