[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!


Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 22 | 4 | 7
Назад Вниз Каталог Обновить

Аноним 20/12/16 Втр 00:24:47  142571807  
14821374528910[[...].gif (30Кб, 640x306)
В общем анонасы, я и сюда добрался, в тред призываются
PHP макаки. Вопрос об алгоритме хранения деревьев в sql
Под названием Nested set (Вложенные множества)

Немного погуглив, я разобрался в его принципе
(вложенных множеств). Но, я до сих пор не могу понять как редактировать структуру. А именно, как перемещать ветку в другую ветку или, ситуации разные, закономерность не могу найти, поразмышляй анонас или поделись как ты перемещаешь ветки в узлы или ветки в другие ветки

Для примера смотри в пикрил, перемести раздел
Snr. Developer в раздел Custom services
А потом Custom services в раздел Development Manager

Для размышления приведу пример пикчи схемы вложенных множеств

Тред создал так же и в соответствующем разделе /pr/\
https://2ch.hk/pr/res/896981.html


Аноним 20/12/16 Втр 00:26:31  142571915
>>142571807 (OP)
у тебя в базе нет иерархических запросов?
Аноним 20/12/16 Втр 00:27:51  142571994
>>142571915
mysql же, есть только таблицы, как видишь в табличной базе можно хранить левую и правую границу числе в диопозоне которых лежат другие множества
Аноним 20/12/16 Втр 00:28:16  142572015
>>142571807 (OP)
и почему у тебя люди и отделы представляют собой элементы одного множества, что такое Assistant/Customer Services/Development manager
Аноним 20/12/16 Втр 00:29:18  142572089
14768699081080.jpg (42Кб, 640x636)
>>142571807 (OP)
>хранения деревьев в sql
Хуй знает, я все свои данные в serialize-массив пихаю и потом его в файл. Норм работает. Нахуй sql
Аноним 20/12/16 Втр 00:29:33  142572103
>>142572015
Вопрос не в этом, вопрос в перемещении и ветвей в другие ветви, делая их подчиненными другим веткам или узлам, названия разделов здесь не фигурируют для логики
Аноним 20/12/16 Втр 00:30:27  142572151
>>142572089
но это не по феншуй, да, так проще я соглашусь
Аноним 20/12/16 Втр 00:30:52  142572180
>>142572089
Начнем с того, что ты пиздоглазое мудило
Аноним 20/12/16 Втр 00:32:37  142572289
>>142572103
" Для заполнения этих ключей нам придется полностью обойти всё дерево дважды посещая каждый из узлов. В результате выборка из дерева будет происходить довольно быстро. С другой стороны изменение структуры требует пересчета всех ключей в узлах следующих за изменяемым узлом."
Аноним 20/12/16 Втр 00:36:26  142572532
>>142572289
т.е. с точки зрения перформанса для апдейта этого дерева проще его целиком пересохранять каждый раз.
Аноним 20/12/16 Втр 00:43:14  142572971
>>142572151
У меня психологическая травма. Стараюсь избегать использование баз данных везде, где это возможно. В универе был курс "Организация Баз Данных" на Microsoft Access
Аноним 20/12/16 Втр 00:46:10  142573155
>>142572289
хотя подожди, пусть у тебя есть поддерево a..b, и ты его хочешь влить в место между c..c+1, тогда тебе надо у всех элементов между b..c уменьшить индекс на b-a, а у самой подветки поменять родителя и прибавить всем элементам c-b, это если c>b, если ветка переезжает влево - аналогично.
вроде даже не надо в памяти все пересобирать.
Аноним 20/12/16 Втр 01:10:02  142574621
>>142573155
но только вот твои а и б сидели на трубе не понятны вообще, приведи пример, попробуй в разных случаях применить его
Аноним 20/12/16 Втр 01:12:29  142574761
>>142571807 (OP)
Можно нецелые числа использовать, тогда не надо все перенумеровывать. Зато получишь усложнение и пиздецомы если у тебя вдруг случится миллиард добавлений в одном месте, так что разница между соседними числами станет нулевая.
Аноним 20/12/16 Втр 01:13:29  142574827
>>142574761
ну нет, спасибо
Аноним 20/12/16 Втр 01:16:20  142575006
>>142571807 (OP)
Смотря что за модель.
Adjacency? Обсчет left - right?

Не еби мозги и ебашь первую. Надеюсь, id родителя в поле поменять сможешь?
Аноним 20/12/16 Втр 01:20:19  142575246
>>142575006
Что за вопрос задаешь, видишь же назвал Nested Set зачем перечисляешь и предлагаешь Adjacency
Нет, речь идет о Nested
Аноним 20/12/16 Втр 01:22:58  142575426
>>142575006
В модели Adjacency раздражают замыкания
Дерево не дает такого гибкого способа редактирования как Nested
Аноним 20/12/16 Втр 01:25:27  142575566
Года полтора назад писал класс для работы с ns tree. И тож долго ебался с переносом. На русском языке материала нету. Иди на гитхаб и смотри как у других сделано, плюс туториалы на английском. Я так реализовывал. на данных более 100к добавление или перемещение нереально долго происходит
Аноним 20/12/16 Втр 01:31:34  142575882
>>142575566
Ну, в расчете на этот алгоритм я не собираюсь хранить много узлов, веток. Да, на русском статья есть, но там хуй пойми как её описали, конкретного примера нет, и причем, на гитхабе я это тоже рыл, в большинстве случаев в классах метод moveNode выглядит так - public function moveNode() {} всё, пиздец)
Аноним 20/12/16 Втр 01:43:33  142576534
>>142575882
Я добавил в закладки тред в /pr. Завтра с утра выложу свою реализацию на гитхаб и кину тебе ссылку.
Аноним 20/12/16 Втр 01:47:09  142576697
>>142576534
Очень интересно будет взглянуть, благодарю, заодно и всем несчастным поможешь переболеть эту хуйню. Если конечно же твои методы помогут редактировать дерево в любую сторону
Аноним 20/12/16 Втр 02:33:29  142578700
90GACcpYE0.jpg (174Кб, 810x1080)
>>142572971

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 22 | 4 | 7
Назад Вверх Каталог Обновить

Топ тредов
Избранное