我正在为主 - 详细信息场景设计数据库表。具体要求是有必要存储有关儿童顺序的信息。我看到了一些可能的解决方案(比如添加一个代表序列中位置的列,或者一个带有外键的列给前一个孩子)但我想知道如何解决这些问题的最佳实践。
最好的问候 Lukasz Glaz
答案 0 :(得分:3)
顺序排列的列是两者中更好的选择。
对于第二个,您需要进行多个连接或具有非常复杂的逻辑,以确定子节点的排序顺序。
当需要维护非文本/数字排序顺序时,请使用数字序列列。添加一些CHECK constraints以保持正确的逻辑(即单个父级的子级不能具有相同的序列号)。
答案 1 :(得分:1)
过去我有一个额外的专栏。然后,您可以使用公用表表达式来递归查询表。见this page.
我在第一个选项中看到的问题是,如果你需要重新安排订单或在中间插入一些东西,你必须在更改后重新编号所有孩子。