朋友们好日子!目前我正在研究这个数据库模型设计,称为修改前序树遍历(MPTT)。在看到使用 Common Table Expressions (CTE) 的劣势后,我发现了使用 MPTT 的建议。但在我可以使用 MPTT 的好处之前,我需要通过添加“右”和“左”节点值来重新设计我的数据库表。为此,我需要制作一个程序来自动化和更新表中每个数据的值。我的问题是我无法制作一个自动化节点值的程序。我正在尝试将 php 语言转换为 C# 代码,但我做不到。我在编程方面的弱点之一是创建“递归”方法。
我使用这个链接作为我的参考。 分层数据库模型
这是我试图转换为 C# 的代码
<?php
function rebuild_tree($parent, $left) {
// the right value of this node is the left value + 1
$right = $left+1;
// get all children of this node
$result = mysql_query('SELECT title FROM tree '.
'WHERE parent="'.$parent.'";');
while ($row = mysql_fetch_array($result)) {
// recursive execution of this function for each
// child of this node
// $right is the current right value, which is
// incremented by the rebuild_tree function
$right = rebuild_tree($row['title'], $right);
}
// we've got the left value, and now that we've processed
// the children of this node we also know the right value
mysql_query('UPDATE tree SET lft='.$left.', rgt='.
$right.' WHERE title="'.$parent.'";');
// return the right value of this node + 1
return $right+1;
}
?>