「注文リストの追加、削除、および変更を簡単に行うことができるように、データベース内に「注文リスト」を保存する最良の方法は何ですか?注文リストをデータベースに保存する最も良い方法は?
ユーザーと映画用のテーブルがあるデータベースを考えてみましょう。各ユーザーにはお気に入りの映画のリストがあります。
多くのユーザーが同じ映画を好きなので、私はユーザーとムービーを別々のテーブルにし、3つ目のテーブルを使用してusermoviesを接続しました。
usermoviesには、ユーザーと映画のIDと「注文番号」が含まれています。注文番号は、ユーザーのムービーのリストを注文するために使用されます。
- プロメテウス ブラック3
- で
- 男性ジャックは次のようにリストを持っているかもしれません
とユーザー独裁者:
は例えば、ユーザージョシュは、以下のリストを持っているかもしれません
- 独裁者
- プロメテウス
- 戦艦
- スノーホワイト
だから、彼らは必ずしも必要ではないが同じ順序で、いくつかのお気に入りを共有します。
私は、クエリを使用して、各ユーザーのための映画のIDのリストを取得することができます。注文したmovie_idsで、私は別のクエリ
SELECT name FROM movies WHERE id in (?,?,?) ORDER BY FIELD (id, ?,?,?)
を使用して映画のリストを取得することができ、その後
SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number
をクエリーは機能しますが、リストを更新するのは本当に複雑です。この情報を保存して、ユーザーxのムービーのリストを取得したり、ムービーを追加したり、削除したり、リストの順序を変更したりするのは簡単です。単にusermovies
テーブル内の関連レコードを削除/追加/削除の好きな映画を追加するには
SELECT um.order_number, m.name FROM movies m
INNER JOIN usermovies um ON m.id = um.movie_id
WHERE um.user_id = ?
ORDER BY um.order_number
:あなたは、単一のクエリを使用することができ、ユーザのお気に入りの映画を取得するに
あなたが使用できるユーザーのすべての映画を取得するにはa 'SELECT name FROM movies INNER JOIN usermovie ON usermovie.movie_id = movies.id AND usermovie.user_id =? ORDER BY usermovie.order_number'。現在のアプローチでは何が難しいか分かりません。ユーザーにムービーを追加するには、単にリンクテーブルに新しいエントリを挿入し、それを削除するだけでエントリを削除します。 – Cyclonecode
ありがとう!それは便利ですが、私の本当の問題は更新です。 – wannabeartist