1

我已经在我的应用程序中集成了 Jstree,现在我想了解该表中的不同列:

CREATE TABLE IF NOT EXISTS `tree` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` bigint(20) unsigned NOT NULL,
  `position` bigint(20) unsigned NOT NULL,
  `left` bigint(20) unsigned NOT NULL,
  `right` bigint(20) unsigned NOT NULL,
  `level` bigint(20) unsigned NOT NULL,
  `title` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

这是网站提供的默认表格。

现在如果想添加一个节点,我怎么知道左、右和水平的值。

4

1 回答 1

2

这看起来像是Adjacency list一个nested sets.

Nested sets是在关系数据库中存储树的更好方法。很难解释你必须在这里这里看的原理。

使用时nested sets不需要parent_id. 我认为 jstree 提供了一个示例表,您可以在其中选择自己使用的技术。

在数据库中存储树的另一种方法是Closure Table。这是我个人的最爱。它简单但功能强大。但是你在网上几乎找不到任何关于它的信息。

于 2013-01-23T11:01:09.083 回答