我在具有 ID 和 ParentID 的数据库中有一个邻接列表来表示树结构:
-a
--b
---c
-d
--e
当然,在一条记录中,ParentID 永远不应与 ID 相同,但我还必须防止循环引用以防止无限循环。这些循环引用理论上可能涉及超过 2 条记录。( a->b、b->c、c->a 等)
对于每条记录,我将路径存储在一个字符串列中,如下所示:
a a
b a/b
c a/b/c
d d
e d/e
我现在的问题是:插入/更新时,有没有办法检查是否会发生循环引用?
我应该补充一点,我了解嵌套集模型等。我选择了存储路径的邻接方法,因为我发现它更直观。我让它与触发器和一个单独的路径表一起工作,它就像一个魅力,除了可能的循环引用。