帮助树状结构

Posted

技术标签:

【中文标题】帮助树状结构【英文标题】:help with tree-like structure 【发布时间】:2010-03-15 22:01:03 【问题描述】:

我有一些财务数据要存储和操作。假设我有 2 个部门,在 2 个城市设有办事处,使用 2 种货币和 4 个银行账户。 (实际上比这更复杂。)我想显示一个这样的列表:

Electronics
    Chicago
        Dollars
            Account 2 -> transactions in acct2 in $ in chicago/electronics
        Euros
            Account 1 -> transactions in acct1 in E in chicago/electronics
            Account 3 -> etc.
            Account 4
    Brussles
        Dollars
            Account 1
        Euros
            Account 3
            Account 4
Dessert Toppings
    Chicago
        Dollars
            Account 1
            Account 4
        Euros
            Account 2
            Account 4
    Brussles
        Dollars
            Account 2
        Euros
            Account 3
            Account 4

因此,在除顶部之外的每个级别,该类别都可以出现在多个位置。我一直在readingaround 讨论各种方法,但这些示例似乎都没有解决我的特定用例,其中节点可以出现在层次结构中的多个位置。 (也许这个名称不同于“树”或“层次结构”。)

我想我的层次结构实际上类似于部门 > 城市 > 货币,其中“电子”和“欧元”只是每个级别的实例,但我不太确定这有什么帮助或伤害。

一些注意事项:这是一个演示站点,所以数据集不会很大——易于设置和维护比查询效率更重要。 (我实际上正在考虑仅手动构建一个数据对象,尽管我更愿意以正确的方式。)另外,FWIW,我们正在使用 php 并具有 ms 访问权限-最后,因此在该环境中使这变得容易的任何库都会有所帮助。 (我已经找到了嵌套集合模式的几个实现。)

【问题讨论】:

【参考方案1】:

您确定要为此使用分层设计吗?对我来说,层次结构似乎更多是所需输出格式的结果,而不是数据结构固有的结果。

如果您必须以不同的顺序显示数据,例如城市 > 货币 > 部门,该怎么办?会不会很麻烦?

您可以改为使用简单的结构,其中一张表用于 Branches,一张用于 Cities,一张用于 Currencies,然后是一张 Account 表,其中 Branch_ID、City_ID 和 Currency_ID 作为外键。

【讨论】:

这也是我得出的结论,至少在这些领域是这样。对“任意嵌套组”有一个模糊的要求,但在决定如何实施它们之前,我必须了解更多关于这真正含义的细节......【参考方案2】:

我不确定您使用的是什么数据库平台。但是,如果您使用的是 MS SQL Server,那么您应该查看 使用公用表表达式的递归查询 (CTE)。它们易于使用,并且专为您所说明的情况类型而设计(例如材料清单)。查看此网站了解更多详情:http://www.mssqltips.com/tip.asp?tip=1520

祝你好运!

【讨论】:

很遗憾,我们使用的是 MS Access。

以上是关于帮助树状结构的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL制作树状图表的方法步骤

关于树状数组套主席树的一些博客

wps制作树形图的方法步骤

文件和目录命令二:

JavaScript开发工具列表

JavaScript开发工具列表