当前位置: 首页 > 知识库问答 >
问题:

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

拓拔烨赫
2023-10-19

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

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

常规做法要怎么做呢?

共有2个答案

仲皓君
2023-10-19

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

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

端木冷勋
2023-10-19

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

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

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

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

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

 类似资料:
  • 插入排序类似于人类按数字或字母顺序对数据进行排序。例如,让班里的每个学生上交一张写有他的名字、学生证号以及个人简历的索引卡片。学生上交上来的卡片是没有顺序的,但是我想让这些卡片按字母顺序排好,这样就可以很容易地与班级花名册进行对照了。 插入排序,有两个循环。外循环将数组元素挨个移动,而内循环则对外循环选中的元素及它前面的元素进行比较。如果外循环中选中的元素比内循环选中的元素小,那么数组元素会向右移

  • 在插入之前,你想通过一段 SQL 为你的 POJO 某一个字段设值。你可以通过 @Prev 属性 @Table("t_pet") public class Pet{ @Name private String name; @Column("photo") @Prev( @SQL("SELECT txt FROM t_pet_photo WHERE pname=@n

  • 需求是这样子的: 页面 字段关联: 后端提供的接口长这样: 这个没看懂啊,按理来说应该按照页面的逻辑来的,设计的是啥数据结构,他们还说这样比较好扩展,这是要扩展啥?

  • 我从数据库中填充。中的数据根据自动生成的主键按降序排序。该表如下所示。 表中的数据由一个列表保存,该列表包含JPA实体的对象列表-

  • 这是我正在开发的第一个插件。我的插件文件夹中只有一个文件,其中包含处理我的管理部分的所有代码。我有自己定制的桌子。我没有使用任何wordpress表格。 结构: 插件/amt 金额。php(此文件包含处理管理部分的所有代码) js/amt。js 现在我有amt.php文件为我的管理部分工作。它正在检索数据并将其保存到数据库中。直到这里一切都好。 现在,我想在插件中添加一些功能,这些功能将显示在网站

  • 我现在有一个id,要求是找到id对应的那条表格数据它所在的页数。表格有个排序功能,排序后的表格数据和原数据顺序是不一样的,不能用原数据.findIndex来查找。怎么办? 我使用onChange来获取排序后的数据,但是表格数据是会更新的,而onChange是只有排序的时候触发了一次,表格数据更新是不会触发的,拿不到最新数据。