將「有序列表」存儲在數據庫中的最佳方式是什麼,以便更新它們(添加,刪除和更改條目順序)很容易完成?將有序列表存儲在數據庫中的最佳方法?
考慮一個數據庫,其中有一張用戶和電影的表格。每個用戶都有一個喜歡的電影列表。
由於許多用戶可以喜歡同一部電影,因此我將用戶和電影製作成單獨的表格,並使用第三個表格將它們與用戶電影相連接。
usermovies包含用戶和電影的id以及「訂單號」。訂單號用於爲用戶訂購電影列表。
例如,用戶喬希可能有以下列表:
- 普羅米修斯
- 黑衣人3
- 獨裁者
和用戶傑克可能有這樣的列表:
- 獨裁者
- 普羅米修斯
- 戰艦
- 白雪公主與獵人
因此,他們分享一些我的最愛,但不一定以相同的順序。
我可以使用查詢獲取電影ID列表中的每個用戶:
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的電影列表,添加電影,刪除它們並更改列表的順序?
要獲得所有的電影你可以使用一個用戶一個 像這樣的單個查詢:'SELECT name FROM movies INNER JOIN usermovie ON usermovie.movie_id = movies.id AND usermovie.user_id =? ORDER BY usermovie.order_number'。我不明白目前的做法有什麼困難?要將電影添加到用戶,只需在鏈接表中插入一個新條目並將其刪除即可刪除條目。 – Cyclonecode
謝謝!這會很方便,但我的真正問題在於更新。 – wannabeartist