Melhor maneira de armazenar listas ordenadas em um banco de dados?

Qual é a melhor maneira de armazenar "listas ordenadas" em um banco de dados, para que seja possível atualizá-las (adicionar, remover e alterar a ordem das entradas)?

Considere um banco de dados em que você tenha uma tabela para usuários e filmes. Cada usuário tem uma lista de filmes favoritos.

Como muitos usuários podem gostar do mesmo filme, fiz de usuários e filmes tabelas separadas e use uma terceira tabela para conectá-los, usermovies.

usermovies contém um id de um usuário e um filme e um "número de pedido". O número do pedido é usado para ordenar a lista de filmes para os usuários.

Por exemplo, o usuário Josh pode ter a seguinte lista:

PrometeuHomens em preto 3O ditador

e o usuário Jack pode ter uma lista como:

O ditadorPrometeuEncouraçadoBranca de Neve e O Caçador

Então, eles compartilham alguns favoritos, mas não necessariamente na mesma ordem.

Eu posso obter a lista de IDs de filmes para cada usuário usando uma consulta:

SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number

Então, com os movie_ids ordenados, posso obter a lista de filmes usando outra consulta

SELECT name FROM movies WHERE id in (?,?,?) ORDER BY FIELD (id, ?,?,?)

Então, as consultas funcionam, mas atualizar as listas parece muito complexo agora - existem maneiras melhores de armazenar essas informações para que seja fácil obter a lista de filmes para o usuário x, adicionar filmes, removê-los e alterar a ordem da lista?

questionAnswers(4)

yourAnswerToTheQuestion