Der beste Weg, um geordnete Listen in einer Datenbank zu speichern?

Was ist der beste Weg, um "geordnete Listen" in einer Datenbank zu speichern, so dass die Aktualisierung (Hinzufügen, Entfernen und Ändern der Reihenfolge von Einträgen) einfach ist?

Stellen Sie sich eine Datenbank vor, in der Sie eine Tabelle für Benutzer und Filme haben. Jeder Benutzer hat eine Liste der Lieblingsfilme.

Da viele Benutzer denselben Film mögen können, habe ich Benutzer und Filme zu getrennten Tabellen gemacht und eine dritte Tabelle verwendet, um sie zu verbinden, Usermovies.

usermovies enthält eine ID eines Benutzers und einen Film sowie eine "Bestellnummer". Die Bestellnummer wird verwendet, um die Liste der Filme für Benutzer zu bestellen.

Beispielsweise könnte Benutzer Josh die folgende Liste haben:

PrometheusMänner in Schwarz 3Der Diktator

und Benutzer Jack könnte eine Liste haben wie:

Der DiktatorPrometheusSchlachtschiffSchneewittchen und der Jäger

Sie teilen also einige Favoriten, aber nicht unbedingt in derselben Reihenfolge.

Ich kann die Liste der Film-IDs für jeden Benutzer mithilfe einer Abfrage abrufen:

SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number

Mit den bestellten movie_ids kann ich dann die Liste der Filme mit einer anderen Abfrage abrufen

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

Abfragen funktionieren also, aber das Aktualisieren der Listen erscheint jetzt sehr komplex - gibt es bessere Möglichkeiten, diese Informationen zu speichern, damit die Liste der Filme für Benutzer x einfach abgerufen, Filme hinzugefügt, entfernt und die Reihenfolge der Liste geändert werden kann?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage