![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Ты боишься если какая ошибка может произойти, так можно при изменениях использовать трансакции, или тоже не подходит? -------------------- ГЫ... |
||||
|
|||||
| Wowa |
|
||||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Можно... но для такой просто операции использовать трансакции - как-то странно. Итак должно чики-пики работать
Представь. 10 000 юзеров. У каждого в базе хранится по дереву с несколькими ветками. Какой-то юзер с первой ветки решает добавить себе подветку, теперь должны перестраиваться параметры веток у всех других юзеров. Добавлено @ 00:08
Да, долгий вероятно. Зависит от ситуации. Но если уровней вложенности мало и веток немного, то спокойно можно даже всё дерево выбрать и быстренько в памяти выстроить нить из родителей. Ну или же рекурсией выбирать через запросы к базе.. |
||||||
|
|||||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Да это будет долговато, даже если поля leftKey и RightKey сделать, извиняюсь за мой плохой английский, "проидексировать", короче в мускуле есть что-то на полобие "register " в С. Только точно не помню как это называется. Скорость увеличится, но думаю не очень на много... Про nested можно сделать разряженное дерево, т.е. с запасом для каждого юзера. Т.е ограничить по кол-ву элементов, И все которые не заданы им, оставлять пустыми и их просто не выводить... А когда добовляет то менять только в области самого юзера. Добавлено @ 00:20
Я считаю нужно сделать двумя способами, и проверить скорость!! Так думаю правильней будет. -------------------- ГЫ... |
||||
|
|||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Можно, но не стандартными средствами класса. А писать свой или переделывать для этого существующий - долго. Или у тебя есть что-то готовое для этого? |
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Готового нет, только родил идею Я могу посидеть завтра может что и накатаю.
На самом деле не так уж и долго, может часа 4 + отладка час/полтора. Вот то что сверху для юзеров можно за основу взять, а там в основном запросы и вывод в массив поменять надо, наверно ещё привязку к таблице пользователей надо убрать. (был написан за 1 час) -------------------- ГЫ... |
||||
|
|||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Наверное лучше за основу взять этот: http://dev.e-taller.net/dbtree Т.к. он более функционален Добавлено @ 00:40
Интересно, какой запас надо делать. По идее - должно быть практически все равно какой запас делать. Можно по сотке оставлять.. |
||||
|
|||||
| AntonioBanderaz |
|
||||||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
В принципе любой, ты сам определишь какой, т.е это вроде максимума элементов дерева...
Вот блин делема, либо быстрый вывод и долгое изменение, либо быстрое изменение и долгий вывод... как бы найти оптимальное... ???
Добавлено @ 00:50
-------------------- ГЫ... |
||||||||
|
|||||||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
AntonioBanderaz вот тут есть обсуждение на эту тему: http://www.phpclub.ru/talk/showthread.php?s=&threadid=48194
Не все так просто. Как переносить при этом ветки с подветками? |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Интересненько... Да, оказалось не всё так просто...
Вот это вообще не представляю... Ели только сначала удалять запас, перемещать, а потом весь запас дополнять, но это уже совсем через ЖЖЖ. Добавлено @ 01:15 http://www.profy.net/forum/view_topic/35.html - вот тут почитай. -------------------- ГЫ... |
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Нашёл подходящий тебе.
вот документация
Добавлено @ 01:24 А вот и полная. http://www.inses.ru/lj/tree/
А как всё просто оказалось!!!! Блин -)) Даже обидно, что не додумался.... вот типо сам код Это сообщение отредактировал(а) AntonioBanderaz - 21.9.2005, 01:28 Присоединённый файл ( Кол-во скачиваний: 7 )
treebrowser.zip 40,45 Kb-------------------- ГЫ... |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
http://www.sitepoint.com/print/1105/ - тут тоже кое что интересное.
-------------------- ГЫ... |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А как он мне может помочь? |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Ну это что-то среднее между Nested и списком. Короче будет оптимально его использовать для твоей задачи...
У тебя теперь есть три варианта которые Ты можешь потестить и выбрать самый оптимальный. Посмотри на организацию таблицы. Это сообщение отредактировал(а) AntonioBanderaz - 21.9.2005, 01:47 -------------------- ГЫ... |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
Не знаю на сколько это в тему, но вдруг. В своё время я мучился над генеологическим деревом и как присвоить уникальный номер человеку в этом дереве.
Ниже прикрепил рисунок простого дерева. Поясню. - Есть уровни родства, их здесь 4 - Есть группы родства, в которые входят братья и сёстра - В каждой группе есть определённый человек И от сюда можно описать любого человека, например выделенного зелёным - 2.1.2. Во-первых получается уникальный номер. Во-вторых, легко можно найти этого человека в древе и все его связи не зависимо от сложности родства и самого древа. Я понимаю, что это немного не то, но мало ли Присоединённый файл ( Кол-во скачиваний: 7 )
tree.gif 11,39 Kb-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Поставлю задачу - локализовать дерево.
Как я понимаю, нужно сделать список деревьев, по которым можно проходить уже созданым алгоритмом. Надо придумать как индотифицировать само дерево, можно и лучше эт будет делать в другой таблице. Теперь у нас две таблицы, одна с деревьями, другая со списком. Теперь появляются проблемы, как быть с перемещением дерева, точнее, как это локально организовать. Как тоже локально добовлять в дерево, чтобы изменялось только локальное дерево. Вот собственно и задача... -------------------- ГЫ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |