相关部分:
嵌套集。
嵌套集解决方案存储每个节点的信息 属于其后代的集合,而不是节点的集合 直接的父母。该信息可以通过编码每个来表示 树中有两个数字的节点,您可以调用
nsleft
和nsright
。CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, nsleft INTEGER NOT NULL, nsright INTEGER NOT NULL, bug_id BIGINT UNSIGNED NOT NULL, author BIGINT UNISGNED NOT NULL, comment_date DATETIME NOT NULL, comment TEXT NOT NULL, FOREIGN KEY (bug_id) REFERENCES Bugs (bud_id), FOREIGN KEY (author) REFERENCES Accounts(account_id) );
以下列方式为每个节点提供
nsleft
和nsright
个数字:nsleft
数小于所有节点的数量 孩子,而正确的数字大于所有人的数字 节点的孩子。这些数字与此无关comment_id
值。
(SQL Anti-Patterns第32页)
不应该说
nsleft
数小于所有节点的数量 后代 ,而正确的数字大于数字 所有节点的 后代 。
或者我对这个概念的理解有缺陷吗?
答案 0 :(得分:1)
我认为这不是一个错字,但你也是正确的,它适用于后代,所以你了解情况 - 你只是没有完全考虑到它。
假设树有3个级别。对于最低叶级别的每个节点,没有子节点。在中间级别,每个节点的nsleft
小于其任何子节点(叶节点)的最小nsleft
,并且nsright
小于最大nsright
它的任何一个孩子。同样,在顶层,单个根节点的nsleft
小于其任何直接子节点的最小nsleft
,并且nsright
大于最大nsright
任何直接的孩子。但是,通过归纳,这意味着根节点的nsleft
节点小于其任何后代的最小nsleft
,并且其nsright
节点大于最大nsright
节点任何后代。
因此,该陈述书写得很准确,但您的推断也是正确的。