我正在写一个由Tree和TreeNode组合而成的数据树结构。树将包含根和数据上的顶级操作。
我正在使用UI库以Windows窗体呈现树,可以在其中将树绑定(bind)到TreeView。

我将需要将此树和节点保存在数据库中。
保存树并获得以下功能的最佳方法是什么:

  • 直观的实现。
  • 轻松绑定(bind)。从树到数据库结构,然后再返回(如果有)
  • 很容易

    我有两个想法。第一种是将数据序列化成表格中的一个衬纸。
    第二种是保存在表中,但是当移至数据实体时,我将在已更改的节点上松开表上的行状态。

    有任何想法吗?

    最佳答案

    我已将此幻灯片共享标记为SQL-Antipatterns,其中讨论了几种替代方法:http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back?src=embed

    那里的建议是使用封闭表(在幻灯片中有解释)。

    这是摘要(幻灯片77):

                      | Query Child | Query Subtree | Modify Tree | Ref. Integrity
    Adjacency List    |    Easy     |     Hard      |    Easy     |      Yes
    Path Enumeration  |    Easy     |     Easy      |    Hard     |      No
    Nested Sets       |    Hard     |     Easy      |    Hard     |      No
    Closure Table     |    Easy     |     Easy      |    Easy     |      Yes
    

    10-04 22:37