|
|
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
Всем привет. Использую в своей БД хранение деревьев через NestedSet, но кроме того в каждом узле дополнительно сохраняю ссылку на parent и ссылку на root. Тоесть модель такая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Кроме того я не использую единое глобальное дерево, а оно у меня разбито на многие мелкие деревья. Для них соответственно Node.rootNodeId == NULL. Так вот, я хочу реализовать перестроение индексов, для таких ситуаций, когда например индексы (leftIndex, rightIndex) "поломались", и осталась только информация (nodeId, parentNodeId, rootNodeId). как это сделать - в голову приходит вариант с рекурсией, но как то слишком сложно подойти к алгоритму... Подскажите, как проще подойти к этому решению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2011, 21:22 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
А что такое "мелкие деревья"? И чему равны левые-правые индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2011, 21:58 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
White OwlА что такое "мелкие деревья"? И чему равны левые-правые индексы? мелкие деревья, имеется ввиду - в базе несколько деревьев, т.е. с логической точки зрения поддеревья выделены в отдельные деревья без общего корня root. левые и правые индексы - хранят нумерацию согласно алгоритму NestedSet. ( http://www.getinfo.ru/article610.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2011, 22:14 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
Рекурсия тут будет проще всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2011, 23:32 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
примерно так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2011, 23:38 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
White Owl, а что такое n.leftChild, n.rightChild? Это случайно не крайние дочерние элементы? Если например есть узел, у которого три дочерних узла одного уровня: n1 -- {n1_1, n1_2, n1_3) то n.leftChild будет равен n1_1 , а n.rightChild будет равен n1_3 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2011, 00:02 |
|
||
|
Перестроение заново индексов NestedSet
|
|||
|---|---|---|---|
|
#18+
unicornmirageWhite Owl, а что такое n.leftChild, n.rightChild? Это случайно не крайние дочерние элементы? Если например есть узел, у которого три дочерних узла одного уровня: n1 -- {n1_1, n1_2, n1_3) то n.leftChild будет равен n1_1 , а n.rightChild будет равен n1_3 ?Угу... Впрочем, если нода своих детей не знает, то можно сделать примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2011, 02:13 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=89&tid=1343100]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 370ms |

| 0 / 0 |
