Najlepszy sposób na przechowywanie zamówionych list w bazie danych?

Jaki jest najlepszy sposób przechowywania „uporządkowanych list” w bazie danych, aby można je było łatwo aktualizować (dodawanie, usuwanie i zmiana kolejności wpisów)?

Rozważ bazę danych, w której masz tabelę dla użytkowników i filmów. Każdy użytkownik ma listę ulubionych filmów.

Ponieważ wielu użytkowników może polubić ten sam film, zrobiłem użytkownikom i filmom osobne tabele i używa trzeciej tabeli, aby je połączyć, filmy użytkownika.

usermovies zawiera identyfikator użytkownika i film oraz „numer zamówienia”. Numer zamówienia służy do zamawiania listy filmów dla użytkowników.

Na przykład użytkownik Josh może mieć następującą listę:

PrometeuszMężczyźni w czerni 3Dyktator

a użytkownik Jack może mieć listę taką jak:

DyktatorPrometeuszOkręt wojennyKrólewna Śnieżka i Łowca

Dzielą się więc niektórymi ulubionymi, ale niekoniecznie w tej samej kolejności.

Mogę uzyskać listę identyfikatorów filmów dla każdego użytkownika za pomocą zapytania:

SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number

Następnie za pomocą zamówionych filmów można uzyskać listę filmów przy użyciu innego zapytania

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

Więc zapytania działają, ale aktualizacja list wydaje się teraz bardzo skomplikowana - czy są lepsze sposoby przechowywania tych informacji, aby łatwo było uzyskać listę filmów dla użytkownika x, dodać filmy, usunąć je i zmienić kolejność listy?

questionAnswers(4)

yourAnswerToTheQuestion