white phoenix
Новичок
Сохранение позиции ветки дерева.
Есть дерево с полями:
`id` - auto_increment
`level` - уровень вложености
`value` - полезные данные
Например такие данные:
id level value
1 1 Ветка
2 2 Подветка
3 1 Category
4 2 Subcategory
5 1 Target
Выборка идет ORDER BY `id`.
Мы имеем три ветки первого уровня: "Ветка", "Category", "Target".
"Ветка" и "Category" имеют по одной подкатегории. Нам понадобилось сделать так чтобы "Target" было в другой позиции, например вначале, при этом id менять нельзя. Естественно нужно ввести еще одно поле, назовем его "pos". Что хранить в поле которое отвечает за позицию элемента? Я думаю что аналог id не подходит, т.к. к примеру у нас pos: 1, 2, 3, 4, 5. Нужно обменять местами 2 и 4 одним запросом. Можно конечно изначально писать в pos числа id*maxlevel и изменять позицию как нам нужно, но может есть более оптимальное и правильное решение? Скиньте пожалуйста ссылки где про это почитать.
Всем спасибо, и простите за глупый вопрос.
Есть дерево с полями:
`id` - auto_increment
`level` - уровень вложености
`value` - полезные данные
Например такие данные:
id level value
1 1 Ветка
2 2 Подветка
3 1 Category
4 2 Subcategory
5 1 Target
Выборка идет ORDER BY `id`.
Мы имеем три ветки первого уровня: "Ветка", "Category", "Target".
"Ветка" и "Category" имеют по одной подкатегории. Нам понадобилось сделать так чтобы "Target" было в другой позиции, например вначале, при этом id менять нельзя. Естественно нужно ввести еще одно поле, назовем его "pos". Что хранить в поле которое отвечает за позицию элемента? Я думаю что аналог id не подходит, т.к. к примеру у нас pos: 1, 2, 3, 4, 5. Нужно обменять местами 2 и 4 одним запросом. Можно конечно изначально писать в pos числа id*maxlevel и изменять позицию как нам нужно, но может есть более оптимальное и правильное решение? Скиньте пожалуйста ссылки где про это почитать.
Всем спасибо, и простите за глупый вопрос.
Ведь зная `pos ` можно сказать чьим потомком является элемент. Изменяя `pos` и/или `level` можно двигать элемент куда угодно. Единственный недостаток это необходимость сортировки при каждой выборке, но у меня уже есть мысля как это обойти.