保持表格中的项目顺序

时间:2017-03-17 20:31:59

标签: php sql database

大家好!我正在制作一个简单的待办事项应用程序。我停止了一个问题。我想允许用户更改列表中元素的顺序(将其保存到数据库中)。

最初的想法之一是:

创建一个列( 订单 ),并在每次用户执行操作时进行更改。 当我们有一些记录时,这是好的,但是数量更大的是什么? 我的想法:

id | name | order
1  | lorem| 1
2  | ipsum| 2
3  | dolor| 3

当用户将“dolor”更改为第一个位置时,脚本必须更新所有记录。 这不是我认为的最佳解决方案。 任何人都可以分享如何优化的知识? 我将不胜感激!

2 个答案:

答案 0 :(得分:0)

您可以使用名为/Users/sa/Documents/Dissertation/first_defiation.py:160: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future learning_benefit = int(np.int((1 + gamma_online_learning) * x[0]) * exp(np.int(bivariate_distribution[x[0] - 1, x[1] - 1]))) next的列。这称为链表,或者如果同时使用两者,则称为双链表。参见:

https://en.wikipedia.org/wiki/Doubly_linked_list

在数据库表中向上移动记录将涉及两个步骤:

  1. 从订单中删除记录。
  2. 将记录重新插入订单。
  3. 总之,对于双链表,您总是需要大约五个记录更改,而对于链表,至少需要三个记录。

答案 1 :(得分:0)

如果您想将这些数据存储在数据库中,那么"订购"专栏是合适的。

每当您更新或插入表格时,您都需要更新此列(删除是不必要的)。通常,您需要更新更改行之后的所有行。触发器可以完成这项工作。

循环遍历行可能很好,几十行甚至几百行(取决于数据库的强大程度)。因此,根据列表的长度,这可能没问题。

任何增强功能都取决于其他因素。我能想到的一些:

  • 这些名单真的有多大?
  • 什么样的转变最重要? (交换?插入?删除?更新?)
  • 转换是否会批量发生?
  • 多个用户是否会同时更改列表。