Acabei de ler um artigo de blog interessante sobre a ordenação do conjunto de resultados definido pelo usuário.
Alguns aplicativos, como listas de tarefas, precisam manter uma ordem de itens definida pelo usuário. O desafio é que a ordem é arbitrária e pode mudar quando o usuário reorganiza os itens
Uma tabela de exemplo poderia ser assim:
create table items
(
itemid int primary key,
itemdata varchar(200),
...
...
userorder ???
);
Com uma possível consulta de recuperação de:
select * from items order by userorder asc;
Há alguma abordagem que eu deva considerar, já que gostaria de manter as atualizações no mínimo, atualizações atômicas e consultas de recuperação o mais simples e "desempenhadas" possível?
Meu pensamento inicial era usar uma TIMESTAMP
coluna extra e atualizar apenas userorder
e os timestamp
valores para uma única linha (com a consulta de recuperação usando ORDER
ing by userorder asc, usertimestamp desc
), mas isso falha quando você precisa mover uma linha entre duas outras linhas que têm o mesmo valor .
Nenhum banco de dados específico em mente, pois eu mesmo uso um amplo espectro.