Modified Pre-order Tree Traversal (MPTT) を使用して、階層データを格納するテーブルを作成しているところです。ご存知のように、各ノードはleft
とright
ID を格納して、その子孫を見つけます。私は CakePHP が推奨するモデルを使用しています。これは、parent_id
各行に を含めることで標準的な方法とは異なります。
推奨されるテーブル構造は次のとおりです。
CREATE TABLE categories (
id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INTEGER(10) DEFAULT NULL,
lft INTEGER(10) DEFAULT NULL,
rght INTEGER(10) DEFAULT NULL,
name VARCHAR(255) DEFAULT '',
PRIMARY KEY (id)
);
これまでこのスタイルを使用したことがなく、どのように検索されるかを正確に知らなかったので、どのフィールドにインデックスを付けるべきか疑問に思っています。主キーだけで十分ですか、それとも主キーも含める必要がlft
ありrght
ますか?