Sto lavorando a un sistema di liste di desideri, in cui gli utenti possono aggiungere elementi alle loro varie liste di desideri e ho intenzione di consentire agli utenti di riordinare gli articoli in seguito. Non sono molto sicuro del modo migliore per archiviarlo in un database rimanendo veloce e senza problemi (questa app verrà utilizzata da una base di utenti abbastanza ampia, quindi non voglio che vada giù per ripulire le cose).
Inizialmente ho provato una colonna position
, ma sembra che sarebbe abbastanza inefficiente dover cambiare il valore di posizione di ogni altro oggetto quando li sposti.
Ho visto persone che usano un riferimento personale per riferirsi al valore precedente (o successivo), ma, ancora una volta, sembra che tu debba aggiornare un sacco di altri elementi nell'elenco.
Un'altra soluzione che ho visto è usare i numeri decimali e attaccare gli elementi negli spazi vuoti tra loro, che sembra la soluzione migliore finora, ma sono sicuro che ci deve essere un modo migliore.
Direi che un elenco tipico potrebbe contenere fino a circa 20 voci, e probabilmente lo limiterò a 50. Il riordino si baserà sul trascinamento della selezione e verrà probabilmente eseguito in lotti per prevenire condizioni di gara e tale dalle richieste Ajax. Sto usando postgres (su heroku) se è importante.
Qualcuno ha qualche idea?
Ciao per qualsiasi aiuto!