![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Вот тут есть хорошая статья по работе с деревьями:
http://www.evolt.org/article/Four_ways_to_...4047/index.html Добавлено @ 21:16 traversedTree Object v. 1.12 - видимо как раз то, что мне нужно. Интересно только, насколько качественно написан этот класс.. И нет ли в нем глюков. Сейчас буду смотреть.. |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Всё таки решил его использовать? По поводу локализации. Объясняю можно ведь использовать nested деревья, только нало сделать возможность управление локальным деревом. Т.е. в некоторой таблице лежит куча так сказать root'ов, по которым нам не пройтись уже существующим классом, ошибку выдаст. А вот если можно будет локализовать дерево, тоесть получать доступ к нему по id его root'а. Грубо говоря в таблице хранится как-бы массив деревьев, и нам нужно обращаться к отдельным его елементам не вызывая изменений в остальных елементах. Вот для этого нам и нужна вторая таблица, чтобы знать сколько у нас деревьев, какой у них id и индефикатор. -------------------- ГЫ... |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Но ведь при этом мы не уйдем от того, что будут перестраиваться значения столбцов left, right в соседних ветках, которые другим юзерам принадлежать будут. Добавлено @ 22:47
не знаю, я пока изучаю класс. Насколько я понял, то там разделять деревья для разных юзеров нужно путем создания еще одного столбца в ИД юзера, и потом в через setCondition() прописывать доп. условия, чтобы выбирались, обновлялись, удалялись ветки только с опред. юзером. Иначе имхо никак. Не понял, для чего там: var $limitStart;// SQL Limit clause @access private var $limitSet; // SQL Limit clause @access private |
||||
|
|||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
В общем я решил пойти следующим способом... 1. Использовать Nested Sets 2. Использоваться класс phpDBTree 1.4 для работы с ним. 4. Парсить все запросы к дереву, добавляя к ним WHERE owner=ИД 5. Таким образом я собираюсь хранить в одной таблице довольно простные деревья нескольких десятков юзеров Что скажете? |
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Я же написал, надо локализовать, т.е не чтобы не затрагивало ничего в других элементах. А вот списки тебе совсем не подходят... На 10000 - они могут из-за рекурсии и большого числа запросов повесить сервис. !!!! Добавлено @ 07:48
Объясни по-подробнее -------------------- ГЫ... |
||||
|
|||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Ну, есть обычный класс для работы с этим дереревом. У каждой ветки будет значение owner, которое означает, какому юзеру принадлежит эта ветка. Получается, что мы можем добавляя ко всем запросам WHERE owner=ИД ЮЗЕРА, работать в одной таблице с множеством деревьев. По одному дереву на юзера. Деревья как раз между собой будут через owner различаться. Добавлено @ 10:21
Это ясно, что надо, но я все равно не понял твою логику. |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Ну смотри у нас нет общего дерева, а куча так сказать root'ов в таблице, там могут быть одинаковые элементы с одинаковыми left и right, значит они могут в принципе подходить к любому из деревьев. Чтобы этого не было надо добавить индетификатор дерева, а дальше работать с существующим алгоритмом, только добовлять where tree_id='индетификатор'. А в другой таблице хранить "адреса" корней деревьев, с их индетификаторами. Ну вот как-то так
-------------------- ГЫ... |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Да, так я и делаю
|
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Ну наконец пришли к общему так сказать знаменателю. Когда закончишь, выложи глянуть
Добавлено @ 22:43 Ну наконец пришли к общему так сказать знаменателю. Когда закончишь, выложи глянуть -------------------- ГЫ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |