如何对多个用户插入不同位置的列表进行排序/排序?

Jus*_*tin 5 php mysql sorting linked-list

我正在制作一个应用程序,多个用户可以在其他评论之上或之下发表评论 这不是线程类型的结构.这更像是在Word文档上进行协作.我无法设计这些条目的方法.

使用mySQL和PHP,按输入时间排序不起作用,也不按评论位置排序,因为如果用户在其他评论之间发布,则位置会发生变化.我不想为每个新条目重新排序评论位置(如果有数千个条目和数十个用户做同样的事情会怎么样).

设计这个的最佳方法是什么?

小智 -1

我肯定会选择按位置排序。插入时,只需增加其下面的所有条目即可——单个update查询。该实现的一个重要特征是它可以很好地处理并发性。如果有两个并发插入,您不必关心递增的顺序(但您确实需要一个非位置 pk,这样当插入发生在您上方时就不会感到不安)。

另一种方法是将其建模为树,这意味着您只需更新分支中下方的条目。但在极少数情况下,维护费用是合理的。(一种折衷方案是将模型建模为垂柳——将总数划分为形成分支的块,但不允许分支之间存在分支;这避免了更新每条记录;但是我仍然猜测与第一种方法相比,这是不值得的。)