【问题标题】:Store children in database preserving information about their order将孩子存储在数据库中,保留有关其订单的信息
【发布时间】:2026-01-29 20:35:01
【问题描述】:

我正在为主从方案设计数据库表。具体的要求是需要存储关于孩子顺序的信息。我看到了一些可能的解决方案(比如在序列中添加一个表示位置的列,或者为前一个子项添加一个具有外键的列),但我想知道如何解决这些问题的最佳实践。

最好的问候
卢卡斯·格拉兹

【问题讨论】:

    标签: database-design


    【解决方案1】:

    顺序位置列是两者中更好的选择。

    对于第二个,您需要进行多次连接或具有非常复杂的逻辑才能确定子项的排序顺序。

    当需要维护非文本/数字排序顺序时,请使用数字序列列。添加一些CHECK constraints 以保持正确的逻辑(即,单亲的孩子不能有相同的序列号)。

    【讨论】:

      【解决方案2】:

      过去我有一个额外的专栏。然后,您可以使用公用表表达式来递归查询该表。见this page.

      我看到第一个选项的问题是,如果您需要重新排列顺序或在中间插入一些东西,您必须在更改后重新编号所有子级。

      【讨论】: