尤川豪   ·  5年前
445 貼文  ·  275 留言

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

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

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

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

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

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

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

  分享   共 1,246 次點閱
按了喜歡:
共有 2 則留言
尤川豪   ·  5年前
445 貼文  ·  275 留言

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

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

就沒那麼簡單了。

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

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

 
尤川豪   ·  5年前
445 貼文  ·  275 留言

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

 
您的留言
尤川豪
445 貼文  ·  275 留言

Devs.tw 是讓工程師寫筆記、網誌的平台。隨手紀錄、寫作,方便日後搜尋!

歡迎您一起加入寫作與分享的行列!

查看所有文章