【问题标题】:how to design database for binary tree? [duplicate]如何为二叉树设计数据库? [复制]
【发布时间】:2009-07-15 05:52:45
【问题描述】:

我正在.Net 和 SQL 服务器上做一个多层次营销领域的项目。 在数据库中它应该像二叉树一样保存。我应该如何设计数据库?

【问题讨论】:

    标签: database-design


    【解决方案1】:
    id | parentid | name
    ---------------------
     1 | null     | node1
     2 | 1        | node2
     3 | 1        | node3
    

    【讨论】:

    • 练习:编写一个查询,返回 node1 的所有死者。
    • 你是这个意思吗? select * From tab where parentid = (select id from table where name = 'node1')
    • 这很有趣 :-) 但是,您可能应该指出一个更好的选择,例如使用嵌套集模型。
    • Arsenmkrt - 不,那将是直系后代。你被要求提供所有后代:)
    • @ChssPly76 好吧,这很容易,不是吗? select * from tab where name != 'node1' ;) 但说真的,这个答案怎么会有 3 个赞成票?
    【解决方案2】:

    这是asked and answered before

    这里有一个pretty decent tutorial,它解释了为什么 arsenmkrt 提出的邻接模型不太理想。

    【讨论】:

    • +1 我以前没想过;)
    【解决方案3】:

    SQL Server 2008 有一个名为 hierarchyid 的内置数据类型来存储分层信息。这里有一些提示。

    当然,您可以按照arsenmkrt 所述在 sqlserver2008 以外的数据库中执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-12
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      相关资源
      最近更新 更多