Сценарий:
Существует база данных фильмов, которыми владеет пользователь, фильмы отображаются на странице под названием "my-movies", фильмы могут отображаться в том порядке, в котором пользователь желает. Например, "Бойцовский клуб" в позиции №1, "Диск" в позиции № 3 и т.д. И т.д.
Очевидным решением является сохранение позиции с каждым элементом, например:
movieid, userid, должность
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
Затем при выдаче данных упорядочивается положением. Этот метод отлично работает для вывода, однако при обновлении возникает проблема: позиция элемента должна быть обновлена, поскольку позиции являются относительными. Если фильм №3 теперь находится в позиции №2, то теперь фильм №3 должен быть обновлен до позиции №2. Если в базе данных содержится 10 000 фильмов, а фильм перемещается из позиции № 1 в позицию # 9999, обновляется почти 10 000 строк!
Мое единственное решение - хранить позиционирование отдельно, вместо того, чтобы иметь отдельное поле для каждой позиции позиции, это всего лишь один большой дамп данных позиций, которые выполняются во время выполнения и связаны с каждым элементом (json, xml, что угодно), но это чувствует... неэффективен, потому что не удается оставить базу данных для сортировки.
Мой обобщенный вопрос: Каков наиболее эффективный способ хранения позиций позиций в списке, который удобен для извлечения и обновления?