在数据库中的行之间存储顺序的最佳方法是什么?

时间:2009-07-20 00:28:56

标签: database-design

我正在克隆并扩展Google Tasks应用程序。我希望能够存储行顺序。我在数据库中创建了一个名为rowNumber的字段。当用户在其他行的中间插入一行时,我必须在许多其他行中更新此字段以实现所需的输出。还有更好的方法吗?

BTW该应用程序是为Google AppEngine(Python)制作的。

2 个答案:

答案 0 :(得分:4)

使rowNumber成为浮点数。当用户在行 x y 之间插入时,新行获取rowNumber =(x.rowNumber + y.rowNumer)/ 2.

如果要移动一行,只需根据目标位置以相同方式更新其rowNumber。

新行获取rowNumber,例如。 MAX + 256。

编辑 Microsoft使用新的HierarchyId数据类型在SQL Server 2008中解决了这个问题。您可以根据需要在几乎之间插入两个项目 - 直到用完HierarchyId max size。

答案 1 :(得分:3)

一个选项可能是将行存储为链接列表,其中每行为下一行和上一行保留一个附加字段。这方面的优点是它需要在插入之后仅触摸另外两行。缺点是,(据我所知)AppEngine没有连接,因此一次查询多行将非常难看。