gpt4 book ai didi

mysql - 插入时为什么闭包表指向自身

转载 作者:行者123 更新时间:2023-11-29 05:23:57 25 4
gpt4 key购买 nike

正在关注 Bill Karwin'在关于闭包表的教程中,我一直不明白为什么节点需要指向自身。举个例子:

创建表

create table closure (
ancestor int not null,
descendant int not null,
primary key (ancestor, descendant),
foreign key (ancestor) references nodes(node),
foreign key (descendant) references nodes(node)
);

假设这些 ID 存在则插入

insert into closure (ancestor, descendant) values
(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7),
(2,2),
(3,3), (3,4), (3,5),
(4,4), (4,5),
(5,5),
(6,6), (6,7),
(7,7); // <-- junction to itself?

我无法真正理解的部分是为什么使用 (1,1) 或 (2,2) 或 (3,3) 等...。我试着用谷歌搜索答案,但我似乎永远找不到合适的关键词来使用。

谢谢

最佳答案

树中的每个节点都需要对应于 closure 中的至少一行,其中它的 idancestor。如果节点是叶子,则它没有任何真正的后代,这种退化的情况通过将 descendant 指向它自己来表示。

我相信他为非叶节点创建了一个自引用行,以便删除具有该 ancestor 的其他行是安全的——当所有后代都被删除时,该节点将继续存在。

关于mysql - 插入时为什么闭包表指向自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com