Организация циклической очереди чего-либо с помощью БД.

Camillo

Новичок
Организация циклической очереди чего-либо с помощью БД.

Я считаю, что это более теоретический вопрос - поэтому сделал пост именно в этой ветке.

Каким образом с помощью БД организовать циклическую очередь? При этом должна быть возможность перемещать объект в пределах этой очереди вверх, вниз, в самые верх очереди, в самый низ очереди.

Самый простой вариант - сделать таблицу вида

uid - уникальный идентификатор, инкремент
object_id - идентификатор объекта в очереди

В такой таблице - первый объект в очереди будет иметь самый маленький uid, а последний - максимальный.
Такая очередь всем хороша, но в ней невозможно реализовать перемещение объекта внутри нее.

Можно сделать немного другую таблицу

uid - инкремент
queue_id - позиция в очереди
object_id - индетификатор объекта в очереди

С помощью такой таблицы можно управлять положением объекта в очереди, но для этого нужно будет
управлять значениями queue_id, что не очень хорошо и становится достаточно сложным если на приложение
накладывается необходимость управлением не только всей очередью, но и очередями объектов только определенных категорий.

Подскажите пожалуйста алгоритм, с помощью которого наиболее разумно реализовать циклическую очередь.

Спасибо. :D
 

LimeJelly

Новичок
перемещать объект в пределах этой очереди вверх, вниз, в самые верх очереди, в самый низ очереди
Ну тогда это уже не очередь.

Я думаю для таких целей лучше список использовать и бегать по нему как по очереди. В списке: указатель на след. элемент, указатель на пред. элемент. У самого первого указатель а пред. - пустой, а у последнего на след. - пустой. Добавление и перемещение проще простого, просто указатели поменял.
 

kpp

Новичок
Автор оригинала: LimeJelly
Ну тогда это уже не очередь.

Я думаю для таких целей лучше список использовать и бегать по нему как по очереди. В списке: указатель на след. элемент, указатель на пред. элемент. У самого первого указатель а пред. - пустой, а у последнего на след. - пустой. Добавление и перемещение проще простого, просто указатели поменял.
Вот-вот, человек дело говорит, ты, видимо, не понимаешь, что такое очередь.
Тема из книжки по структурам данных. Там про эти вещи сотня страниц написана.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Camillo, дай полное и четкое определение задачи.

Фразы "очередь хороша, но в ней невозможно реализовать перемещение", а затем "можно управлять положением, но сложно очередями объектов только определенных категорий" говорят, что ты еще полностью не определил, что именно тебе надо - очередь, положение, категории, еще что...
 
Сверху