一个前端不懂的前插后插数据的排序需求?

有一个业务数据列表,假设如下面这样,有上插、下插的操作,数据库应该如何设计order?

    1. 浮点型order,插入的时候一直是前后的order相加除以2,但是这样总会有重复的,感觉,除非无限小数。
    1. order用很大的值,比如1000和2000,然后不停的除以2,感觉也会有重复的时候。
order操作
1上插 下插
2上插 下插

常规做法要怎么做呢?

阅读 686
avatarAI BotBETA

要解决这个问题,可以考虑以下几点:

  1. 需要多少精度:首先你需要考虑你的业务需要多少精度。例如,如果你的业务需要精确到小数点后5位,那么你可以使用一个足够大的数(比如10的10次方)作为基数值,然后将这个数分配给每个新插入的元素。这样插入新元素时就不会产生重复的order值。
  2. 维护操作的顺序:对于上插和下插的操作顺序,可以考虑在操作表中分别记录上插和下插的顺序。这样即使order值相同,也可以通过查看操作顺序来确定元素的顺序。
  3. 事务和并发:如果你的应用会有多个并发用户同时插入数据,那么需要考虑事务和并发控制。你可能需要使用数据库的事务功能来确保在并发环境下order值的正确性。

基于以上几点,以下是一个可能的解决方案:

  1. 创建一个新的表用于存储操作顺序。该表包括两个字段:id和操作顺序。每当有新的上插或下插操作时,就在该表中插入一条新的记录,并记录下操作顺序。
  2. 在插入新元素时,首先获取当前最大的order值,然后根据所需的精度,使用一个足够大的数(比如10的10次方)作为基数值,然后将这个数分配给每个新插入的元素。这样可以确保不会产生重复的order值。
  3. 在插入新元素时,同时更新操作顺序表。这样即使order值相同,也可以通过查看操作顺序来确定元素的顺序。
  4. 为了处理并发控制,可以使用数据库的事务功能。在事务中执行插入操作,以确保在并发环境下order值的正确性。

以上方案可以在保证精度的同时,确保上插和下插的顺序正确,并且可以有效地处理并发控制。

2 个回答

我一般直接用整形,每次更新一页的数据即可,也不是很复杂。

有时候程序效率要让步与开发效率。

前端不一定要懂这个排序需求,按照这个表格,前端首先知道的是,点上插,那么就是发起一个请求,告诉后端接口,要插上去了;如果是点下插也是一样,无非就是告诉接口,要插下面去了。

或者把上插下插的操作记录保留着,在某个特定时刻提交给接口,统一请求并记录下来。

具体怎么算,跟前端有多少关系呢。

推荐问题
logo
Microsoft
子站问答
访问
宣传栏