私は現在カテゴリ階層を開発しています。しかし、私はこの階層にPHP関数を使用して新しいノードを追加する必要があります。PHP/MySQLを使用してツリートラバーサル階層をゼロから作成する
問題は、rebuild_tree関数が十分に良い(換言すれば、大きな木で効率的である)ということです。
サンプルクエリ:
表の結果はそのように見える
CREATE TABLE `t_categories`(
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(45) NOT NULL,
`lft` INTEGER UNSIGNED NOT NULL,
`rght` INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 1',1,16);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 2',2,3);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 3',4,7);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 4',5,6);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 5',8,13);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 6',9,12);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 7',10,11);
INSERT INTO t_categories (title, lft, rght) VALUES ('Cat 8',14,15);
:
ID TITLE LFT RGHT
1 Cat1 1 16
2 Cat2 2 3
3 Cat3 4 7
4 Cat4 5 6
5 Cat5 8 13
6 Cat6 9 12
7 Cat7 10 11
8 Cat8 14 15
私は上記のサンプルデータを与えたが、私は同様にスクラッチから完全に新しいノードを作成する必要があります。
したがって、大きなツリーで効率的なPHP関数を使用して、このツリーに新しいノードを追加するにはどうすればよいですか?
あなたは大きな木を管理する効率的な方法を探しているなら、あなたは隣接リストにネストされたセットから、より良いスイッチいただきたい - http://explainextended.com/2009/09/を24/adjacency-list-vs-nested-sets-postgresql/ –
@foo:良い点がありますが、少なくとも90でケースを終了し、回答を選択することができます。 – Bytemain