Лучший способ хранить упорядоченные списки в базе данных?

Каков наилучший способ хранения «упорядоченных списков»? в базе данных, так что их обновление (добавление, удаление и изменение порядка записей) легко сделать?

Рассмотрим базу данных, где у вас есть таблица для пользователей и фильмов. У каждого пользователя есть список любимых фильмов.

Поскольку многим пользователям может нравиться один и тот же фильм, я разделил таблицы пользователей и фильмы и использовал третью таблицу для их соединения - пользовательские фильмы.

usermovies содержит идентификатор пользователя, фильм и «номер заказа». Номер заказа используется для заказа списка фильмов для пользователей.

Например, пользователь Josh может иметь следующий список:

Prometheus Men in Black 3 The Dictator

и пользователь Джек может иметь список вроде:

The Dictator Prometheus Battleship Snow White and the Huntsman

Таким образом, они разделяют некоторые избранные, но не обязательно в том же порядке.

Я могу получить список идентификаторов фильмов для каждого пользователя, используя запрос:

SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number

Затем с заказанными movie_ids я могу получить список фильмов, используя другой запрос

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

Таким образом, запросы работают, но обновление списков кажется действительно сложным - существуют ли более эффективные способы хранения этой информации, чтобы было легко получить список фильмов для пользователя x, добавить фильмы, удалить их и изменить порядок списка?

Ответы на вопрос(4)

Ваш ответ на вопрос