如何设计支持人工排序的列表的数据库结构?

例如 SegmentFalut 的标签这个页面:http://segmentfault.com/tags

假设网站管理是可以手工安排各个标签的顺序的,那么数据库应该如何设计?修改顺序时的 API 请求应该如何设计?

阅读 7.6k
2 个回答

自己答一个我的想法。

数据库中,每个标签上储存一个实数,从小到大地标识标签的顺序。例如第一个标签是 -5, 排在第一个;第二个是 -2, 第三个是 0, 第四个是 4.

查询的时候很好办,直接按这个字段排序即可。

修改顺序的时候,请求的内容是类似于「将标签 A 置于 B 和 C 之间」这样的,然后后端把 A 的顺序设置为 B + (C - B) / 2.

index + modify_time

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏