Pracuję nad systemem list życzeń, w którym użytkownicy mogą dodawać elementy do różnych list życzeń, i zamierzam umożliwić użytkownikom ponowne zamówienie elementów w późniejszym terminie. Nie jestem do końca pewien, jak najlepiej przechować to w bazie danych, jednocześnie zachowując szybkość i nie zmieniając się w bałagan (ta aplikacja będzie używana przez dość dużą bazę użytkowników, więc nie chcę, aby spadła do czyszczenia rzeczy).
Początkowo próbowałem position
kolumny, ale wydaje się, że byłoby dość nieefektywne zmienianie wartości pozycji każdego innego elementu podczas przenoszenia.
Widziałem ludzi używających odsyłaczy do odniesienia do poprzedniej (lub następnej) wartości, ale znowu wydaje się, że musiałbyś zaktualizować całą masę innych pozycji na liście.
Innym rozwiązaniem, które widziałem, jest używanie liczb dziesiętnych i po prostu umieszczanie przedmiotów w przerwach między nimi, co wydaje się najlepszym rozwiązaniem do tej pory, ale jestem pewien, że musi być lepszy sposób.
Powiedziałbym, że typowa lista zawierałaby do około 20 przedmiotów i prawdopodobnie ograniczę ją do 50. Zmiana kolejności będzie polegała na przeciąganiu i upuszczaniu i prawdopodobnie zostanie wykonana partiami, aby zapobiec warunkom wyścigowym i tym podobne z żądania ajax. Używam postgres (na heroku), jeśli to ma znaczenie.
Czy ktoś ma jakieś pomysły?
Pozdrawiam za wszelką pomoc!