в БД есть таблица отсортированная по полю “Ключ”, для неё нужно сделать 2 вида операции:
1) поменять местами рядом стоящие элементы
2) вставить элемент после текущего элемента.
требование - минимум обращений к БД!
с первым пунктом все просто - просто поменять значение ключей у этих элементов,
а вот для второго варианта пока в раздумьях…
есть у кого какие идеи?
я пока что придумал такой вариант: в текущем элементе хранить номер последнего вставленного-подчиненного элемента, и уменьшать его для следующего вставленного элемента, пример:
элементы: 1, 2, 3, 4
вставляем после 2: 1, 2, 2-9, 3, 4
вставляем после 2: 1, 2, 2-8, 2-9, 3, 4
вставляем после 2-8: 1, 2, 2-8, 2-8-9, 2-9, 3, 4
…
когда код станет сильно большим или дойдет до 0 (2-9 -> 2-0), то врубать переиндексацию.
для того что-б больше элементов можно было добавить без пересчета коды строить из символов и цифр и начинать отсчет от “zzz” (будет уменьшаться до “000” по мере добавления элементов)