将订单列添加到数据库

时间:2017-11-27 21:55:27

标签: mysql sorting database-design sql-order-by

我有一张包含文章的表格。 默认情况下,文章根据添加的日期(desc。)进行排序,因此最新文章首先出现。

但是,我想让编辑能够更改文章的顺序,以便按照自己喜欢的顺序显示。所以我想添加一个整数" order"列。

我处理如何处理这个问题的困境,因为在编辑文章的订单时,我不想改变其他订单。

此问题的最佳做法是什么?以及像Wordpress这样的其他CMS如何处理这个?

1 个答案:

答案 0 :(得分:0)

更具挑战性的是用于促进项目迁移的UI。

首先,确定主要目标是什么。采访编辑,然后“在线之间阅读” - 他们不会真正告诉你他们想要什么。

  • 如果目标是一次将项目移动到列表顶部,那么您可以简单地设置一个标记,说明哪个项目需要先出现。 (注意:一旦编辑有这个功能,他们会要求更多!)
  • 将项目移至列表的“顶部”,但会在其上方插入较新的项目。
  • 将项目移至列表的“顶部”,但将在其下方插入较新的项目
  • 交换成对的adjecent项目。 (这通常出现在只包含少量项目的用户界面中;对于成千上万的用户来说不可行 - 除非重新排列只是本地化。
  • 主要争抢。

同时,UI需要显示足够的信息以清楚项目是什么,但足够紧凑以适合单个屏幕。 (这可能是一个无法解决的问题。)

一旦确定了UI,数据库中的内部结构就不是什么大问题了。 INT与FLOAT - 要么会奏效。

INT - 易于交换相邻的对;用于将项目移动到列表顶部的混乱。 FLOAT - 在大约20次重排后(在最坏的情况下)失去了动力。 DOUBLE会持续更久; BIGINT可以模拟这样的情况 - 从项目数字之间的大差距开始。

回到你的问题 - 我怀疑是否有一种解决问题的“标准”方法。将其视为可以处理的“简单”问题。