Я просто создаю таблицу для хранения иерархических данных с использованием модифицированного обхода дерева предварительного заказа (MPTT) - вы знаете один: каждый узел хранит идентификаторы left
и right
для поиска своих потомков. Я использую модель, предложенную 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
?