Сортировка объектов
Всем привет. Есть задача: обеспечить возможность сортировки объектов пользователями. (т.е. на странице есть некий список и пользователь drag-n-drop`ом его сортирует как ему нужно)
Сложность возникает в тот момент, когда нужно эту сортировку сохранить в базе данных.
У меня есть 2 варианта:
1) У каждого списка создать поле, в котором упорядоченно хранить список id элементов списка.
2) У каждого элемента создать поле weight и по этому полю сортировать выборку
А теперь представьте:
* элемент 1
* элемент 2
* элемент 3
...
* элемент 10000
Количество элементов никак не ограничено.
При использовании 1 варианта: представьте поле, в котором будет храниться список из тысяч элементов. Теряется весь смысл базы данных. Да и сортировать всю выборку по такому массиву будет не удобно.
При использование 2 варианта: если сдвигается хоть один элемент, значение weight придется перезаписывать для всех последующих. Даже если указывать weight с некоторым шагом (например 10), рано или поздно придется пересчитывать для всего списка.
Собственно, вопрос: как лучше организовать упорядоченное хранение объектов?