我正在写一个由Tree和TreeNode组合而成的数据树结构。树将包含根和数据上的顶级操作。
我正在使用UI库以Windows窗体呈现树,可以在其中将树绑定(bind)到TreeView。
我将需要将此树和节点保存在数据库中。
保存树并获得以下功能的最佳方法是什么:
我有两个想法。第一种是将数据序列化成表格中的一个衬纸。
第二种是保存在表中,但是当移至数据实体时,我将在已更改的节点上松开表上的行状态。
有任何想法吗?
最佳答案
我已将此幻灯片共享标记为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