¿La mejor manera de almacenar listas ordenadas en una base de datos?

¿Cuál es la mejor manera de almacenar "listas ordenadas" en una base de datos, de modo que actualizarlas (agregar, eliminar y cambiar el orden de las entradas) sea fácil?

Considere una base de datos donde tenga una tabla para usuarios y películas. Cada usuario tiene una lista de películas favoritas.

Como a muchos usuarios les puede gustar la misma película, he hecho que los usuarios y las películas separen las tablas y utiliza una tercera tabla para conectarlas, usermovies.

Usermovies contiene un ID de usuario y una película y un "número de pedido". El número de pedido se utiliza para ordenar la lista de películas para los usuarios.

Por ejemplo, el usuario Josh podría tener la siguiente lista:

PrometeoHombres de negro 3El dictador

y el usuario Jack podría tener una lista como:

El dictadorPrometeoAcorazadoBlancanieves y el cazador

Entonces, comparten algunos favoritos, pero no necesariamente en el mismo orden.

Puedo obtener la lista de ID de películas para cada usuario mediante una consulta:

SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number

Luego, con los Movie_ids ordenados, puedo obtener la lista de películas usando otra consulta

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

Así que las consultas funcionan, pero la actualización de las listas parece realmente compleja ahora. ¿Hay mejores maneras de almacenar esta información para que sea fácil obtener la lista de películas para el usuario x, agregar películas, eliminarlas y cambiar el orden de la lista?

Respuestas a la pregunta(4)

Su respuesta a la pregunta