Silentland
Новичок
Пример:
В базе хранится массив
id| sortIndex
A | 1
B | 2
C | 3
D | 4
Допустим, мы поменяли в нем позицию элемента D. Стало:
id| sortIndex
A | 1
D | 2
B | 3
C | 4
Мы перестраиваем индексы всех элементов и передаем их на сервер. Или передаем только изменившийся элемент, а сервер сам все перестраивает. Проблема этого способа в том, что в базе будут изменены все элементы.
Можно сделать по-другому, например, так:
id| sortIndex
A | 1
D | 1,5
B | 2
C | 3
Тут мы вычисляем новый индекс как среднее арифметическое от индекса соседей. Соответственно в базе меняется только один элемент.
Вконтакте для аудиозаписей, вообще, использует не индексы, а ссылки на последующий/предыдущий элементы. Правда, сама сортировка в этом случае будет тяжеловесной (вместо отображения по возрастанию придется бегать по связанному списку).
В общем, кто какие решения знает?
В базе хранится массив
id| sortIndex
A | 1
B | 2
C | 3
D | 4
Допустим, мы поменяли в нем позицию элемента D. Стало:
id| sortIndex
A | 1
D | 2
B | 3
C | 4
Мы перестраиваем индексы всех элементов и передаем их на сервер. Или передаем только изменившийся элемент, а сервер сам все перестраивает. Проблема этого способа в том, что в базе будут изменены все элементы.
Можно сделать по-другому, например, так:
id| sortIndex
A | 1
D | 1,5
B | 2
C | 3
Тут мы вычисляем новый индекс как среднее арифметическое от индекса соседей. Соответственно в базе меняется только один элемент.
Вконтакте для аудиозаписей, вообще, использует не индексы, а ссылки на последующий/предыдущий элементы. Правда, сама сортировка в этом случае будет тяжеловесной (вместо отображения по возрастанию придется бегать по связанному списку).
В общем, кто какие решения знает?