将子项存储在数据库中,保留有关其订单的信息

时间:2010-03-16 11:27:27

标签: database-design

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

最好的问候 Lukasz Glaz

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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