尤 川豪   ·  1月前
Exp. 1,209  ·  152 貼文  ·  114 留言

允許使用者在列表內拉動調整順序的 MySQL schema 設計

應用程式,例如可以建立「我的播放清單」等等情境

用戶將多筆資料放進一個集合,集合內可增、刪、移動順序

如何在 schema 表達順序?單純用 1 ~ 10 ~ ... 的整數的話

  • 把一筆資料移動開頭,後面全部資料的順序欄位都要更新
  • 插進一筆新資料,後面全部資料的順序欄位都要更新
  • 刪除一筆資料,後面全部資料的順序欄位都要更新

有沒有更好的作法?找到一則 link 探討:

https://dba.stackexchange.com/questions/36875/arbitrarily-ordering-records-in-a-table

  分享   共 80 次點閱
共有 2 則留言
尤 川豪   ·  1月前
Exp. 1,209  ·  152 貼文  ·  114 留言

這個問題沒有乍看之下那麼簡單,雖然用最單純的作法似乎沒問題,但要同時確保:

  • 順序欄位的連貫性
  • 可以無限制地在某兩個資料之間插資料
  • 極大清單時,刪除某筆資料時更新其餘資料的效能

就沒那麼簡單了。

這邊有一則針對此問題的更廣泛作法討論&優缺點比較

https://begriffs.com/posts/2018-03-20-user-defined-order.html

 
尤 川豪   ·  1月前
Exp. 1,209  ·  152 貼文  ·  114 留言

不過全部看完之後,我還是決定用個 priority 整數欄位,用1, 2, 3, 4, 5 ... 無腦處理這個問題就好了...

 
您的留言
尤 川豪
Exp. 1,209  ·  152 貼文  ·  114 留言

關於作者

Devs.tw 作者,喜歡分享&建造新東西的工程師。

技術部落格:轉個彎日誌

歡迎在 Facebook 追蹤我!

不定期分享有趣技術文章!