什么是在mysql数据库中存储链表的最佳方法,这样插入很简单(即你不必每次都重新索引一堆东西),这样就可以很容易地按顺序拉出列表了.
我已将链表实现为自引用数据库表:
CREATE TABLE LinkedList(
Id bigint NOT NULL,
ParentId bigint NULL,
SomeData nvarchar(50) NOT NULL)
Run Code Online (Sandbox Code Playgroud)
其中Id是主键,ParentId是列表中上一个节点的Id.第一个节点有ParentId = NULL.
我现在想要从表中进行SELECT,按照它们应该出现的顺序对行进行排序,作为列表中的节点.
例如:如果表包含行
Id ParentId SomeData
24971 NULL 0
38324 24971 1
60088 60089 3
60089 38324 2
61039 61497 5
61497 60088 4
109397 109831 7
109831 61039 6
Run Code Online (Sandbox Code Playgroud)
然后使用标准对其进行排序,结果应该是:
Id ParentId SomeData
24971 NULL 0
38324 24971 1
60089 38324 2
60088 60089 3
61497 60088 4
61039 61497 5
109831 61039 6
109397 109831 7
Run Code Online (Sandbox Code Playgroud)
你应该使用SomeData colum作为控件,所以请不要作为SomeData的ORDER …
假设我想要一个项目,以及一对多的待办事项,并想要任意重新订购待办事项?
在过去,我添加了一个带编号的订单字段,当有人想要更改订单时,必须使用新的订单号更新所有商品.这可能是最糟糕的方法,因为它不是原子的,需要多次更新.
我注意到Django有一个多值的CommaSeparatedIntegerField,它可以通过将订购的密钥存储在项目表的一个字段中的待办事项表中的项目来包含订单.
我考虑过一个杜威十进制系统,如果我想把项目3放在1和2之间,我会把它的订单号改为1.5.
有些东西告诉我,虽然我有一个更容易的选择...
你如何命令一对多的关系?