Ну, это будет звучать как глупый вопрос, я знаю. Возможно, это одно из самых очевидных действий, но я пытаюсь найти хороший способ сортировки записей в базе данных.
Таблица изображений выглядит следующим образом:
entry_id | entry_data
-------------------------
1 | data1
2 | data2
... | ...
n | datan
entry_id - это, конечно, первичный ключ с опцией AI, поэтому все записи имеют уникальный идентификатор.
Сейчас. Я хочу заказать эти данные. Скажем, я хочу, чтобы entry_id = 2 был первым, не меняя его entry_id. Тогда таблице нужен еще один столбец для хранения номера заказа.
Я пробовал 2 подхода.
entry_order_no : это в основном сохранит номер заказа элементов. Любой новый предмет всегда будет добавлен в конец.
left_id + right_id : этот подход используется phpBB. Не уверен, почему для этого требуется right_id?
Кажется, я предпочитаю 1-й подход, но как вы сортируете данные позже.
Предположим, я хочу, чтобы вновь добавленный элемент переместился с последней позиции, скажем, на 2-ю.
То, как я это делал, я использовал индексированные таблицы, где индекс был порядковым номером. Каждый индекс содержал ассоциативный массив, который имел entry_id. Таким образом, я «просто» сделал цикл foreach с ОБНОВЛЕНИЕМ для всех записей со 2-го места вниз. Это может работать для нескольких строк. Может быть, даже десятки. Но что, когда у вас есть сотни? Это кажется крайне неэффективным. Второй кажется немного лучше. Но что-то все еще говорит мне, что есть лучший подход.
Пожалуйста, предложите.