В общем анонасы, я и сюда добрался, в тред призываются PHP макаки. Вопрос об алгоритме хранения деревьев в sqlПод названием Nested set (Вложенные множества)Немного погуглив, я разобрался в его принципе (вложенных множеств). Но, я до сих пор не могу понять как редактировать структуру. А именно, как перемещать ветку в другую ветку или, ситуации разные, закономерность не могу найти, поразмышляй анонас или поделись как ты перемещаешь ветки в узлы или ветки в другие веткиДля примера смотри в пикрил, перемести разделSnr. Developer в раздел Custom servicesА потом Custom services в раздел Development ManagerДля размышления приведу пример пикчи схемы вложенных множествТред создал так же и в соответствующем разделе /pr/\https://2ch.hk/pr/res/896981.html
>>142571807 (OP)у тебя в базе нет иерархических запросов?
>>142571915mysql же, есть только таблицы, как видишь в табличной базе можно хранить левую и правую границу числе в диопозоне которых лежат другие множества
>>142571807 (OP)и почему у тебя люди и отделы представляют собой элементы одного множества, что такое Assistant/Customer Services/Development manager
>>142571807 (OP)>хранения деревьев в sqlХуй знает, я все свои данные в serialize-массив пихаю и потом его в файл. Норм работает. Нахуй sql
>>142572015Вопрос не в этом, вопрос в перемещении и ветвей в другие ветви, делая их подчиненными другим веткам или узлам, названия разделов здесь не фигурируют для логики
>>142572089но это не по феншуй, да, так проще я соглашусь
>>142572089Начнем с того, что ты пиздоглазое мудило
>>142572103" Для заполнения этих ключей нам придется полностью обойти всё дерево дважды посещая каждый из узлов. В результате выборка из дерева будет происходить довольно быстро. С другой стороны изменение структуры требует пересчета всех ключей в узлах следующих за изменяемым узлом."
>>142572289т.е. с точки зрения перформанса для апдейта этого дерева проще его целиком пересохранять каждый раз.
>>142572151У меня психологическая травма. Стараюсь избегать использование баз данных везде, где это возможно. В универе был курс "Организация Баз Данных" на Microsoft Access
>>142572289хотя подожди, пусть у тебя есть поддерево a..b, и ты его хочешь влить в место между c..c+1, тогда тебе надо у всех элементов между b..c уменьшить индекс на b-a, а у самой подветки поменять родителя и прибавить всем элементам c-b, это если c>b, если ветка переезжает влево - аналогично. вроде даже не надо в памяти все пересобирать.
>>142573155но только вот твои а и б сидели на трубе не понятны вообще, приведи пример, попробуй в разных случаях применить его
>>142571807 (OP)Можно нецелые числа использовать, тогда не надо все перенумеровывать. Зато получишь усложнение и пиздецомы если у тебя вдруг случится миллиард добавлений в одном месте, так что разница между соседними числами станет нулевая.
>>142574761ну нет, спасибо
>>142571807 (OP)Смотря что за модель.Adjacency? Обсчет left - right?Не еби мозги и ебашь первую. Надеюсь, id родителя в поле поменять сможешь?
>>142575006Что за вопрос задаешь, видишь же назвал Nested Set зачем перечисляешь и предлагаешь AdjacencyНет, речь идет о Nested
>>142575006В модели Adjacency раздражают замыканияДерево не дает такого гибкого способа редактирования как Nested
Года полтора назад писал класс для работы с ns tree. И тож долго ебался с переносом. На русском языке материала нету. Иди на гитхаб и смотри как у других сделано, плюс туториалы на английском. Я так реализовывал. на данных более 100к добавление или перемещение нереально долго происходит
>>142575566Ну, в расчете на этот алгоритм я не собираюсь хранить много узлов, веток. Да, на русском статья есть, но там хуй пойми как её описали, конкретного примера нет, и причем, на гитхабе я это тоже рыл, в большинстве случаев в классах метод moveNode выглядит так - public function moveNode() {} всё, пиздец)
>>142575882Я добавил в закладки тред в /pr. Завтра с утра выложу свою реализацию на гитхаб и кину тебе ссылку.
>>142576534Очень интересно будет взглянуть, благодарю, заодно и всем несчастным поможешь переболеть эту хуйню. Если конечно же твои методы помогут редактировать дерево в любую сторону
>>142572971