0

我需要将树状结构数据插入我的数据库。让我们现在举个例子,树有 n 个级别,我有一个名为 T_Node 的节点表,其中有一列名为“名称”(列的数量可能稍后会增加)和一个名为 T_Edge 的边表。

在 T_Node 中,我有几个节点,在 T_Edge 中,每个节点只有一个关系,其中 from_id 将是子节点,to_id 将是该子节点的父节点。

为了得到给定'NodeName'下的树,我会使用这样的递归查询:

WITH cte as (   
    
    Select 1 xlevel, fromName.name child, toName.name parent
    from  dbo.T_Node fromName, dbo.T_Node toName, dbo.T_Edge r 
    WHERE MATCH(fromName-(r)->toName) 
    and fromName.name = 'NodeName'
    UNION ALL
    Select xlevel + 1, fromName.name, toName.name
    from cte c, dbo.T_Node fromName, dbo.T_Node toName, dbo.T_Edge r 
    WHERE MATCH(fromName-(r)->toName) and c.parent = fromName.name
    )

    SELECT *
    FROM cte
    ORDER BY xlevel, parent, child

我的问题是:这是有效地使用和查询图表以获取下面的树的最佳方法吗?我应该通过在 T_Edge 中创建更多关系还是创建另一个表来改进它?

4

0 回答 0