当前位置:  开发笔记 > 数据库 > 正文

如何对使用嵌套集模型存储的树进行排序?

如何解决《如何对使用嵌套集模型存储的树进行排序?》经验,为你挑选了0个好方法。

当我提到嵌套集模型时,我指的是这里描述的内容.

我需要在用户定义的层次结构中构建一个用于存储"类别"(我想不出更好的词)的新系统.由于嵌套集模型针对读取而不是写入进行了优化,因此我决定使用它.不幸的是,在我研究和测试嵌套集时,我遇到了如何显示带有排序节点的分层树的问题.例如,如果我有层次结构:

root
    finances
        budgeting
            fy08
    projects
        research
        fabrication
        release
    trash

我希望对它进行排序,使其显示为:

root
    finances
        budgeting
            fy08
    projects
        fabrication
        release
        research
    trash

请注意,制作在研究之前出现.

无论如何,经过长时间的搜索,我看到了诸如"将树存储在一个多维数组中并对其进行排序"和"求助树并序列化回嵌套集模型"的答案(我正在解释......).无论哪种方式,第一个解决方案是RAM和CPU的可怕浪费,这两者都是非常有限的资源......第二个解决方案看起来像很多痛苦的代码.

无论如何,我能够弄清楚如何(使用嵌套集模型):

    在SQL中启动一个新树

    将节点作为树中另一个节点的子节点插入

    在树中的兄弟节点之后插入节点

    使用SQL中的层次结构拉出整个树

    从具有或不具有深度限制的层次结构中的特定节点(包括根)拉出子树

    找到树中任何节点的父节点

所以我认为#5和#6可用于进行我想要的排序,它也可以用于按排序顺序重建树.

但是,现在我已经了解了所有这些我学会了做的事情,我看到#3,#5和#6可以一起用来执行排序插入.如果我做了排序插入,它总是被排序.但是,如果我改变排序标准或者我想要一个不同的排序顺序,我就会回到原点.

这可能只是嵌套集模型的限制吗?它的使用是否会抑制输出的查询排序?

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有