ФорумПрограммированиеPHP для идиотов → В каком формате храним деревья?

В каком формате храним деревья?

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 23 января 2010 г. 12:29, спустя 1 день 11 часов 40 минут

    Короче пока я ходил-бродил, все умные мысли и растерял.

    Делал я CMS'ку, там древовидная структура страниц + поле sorder. И из админки нужно драг энд дропом менять как сортировку так и родителя. Дерево хранить решил в виде списков смежности. Решил так из-за лени разбираться в остальных методах (это было давно и я толком ничего не понимал). А еще руководствовался тем, что пускай уж лучше один раз при выводе наебнется, чем при обновлении. Все равно вывод можно отправить в дооолгий кеш, мы ж не ежеминутно меняем структуру. Жалею ли я об этом? да вроде как нет.

    Какие там сложности: я решил сделать высоконастраиваемый класс. Что бы можно было указывать id элемента, с которого начинаем построение дерева (назовем это вершиной А). Что бы можно было учитывать/игнорировать поля show_menu, is_visible, глубина от A. Строить дерево только от текущего выбранного элемента (B). Глубина выборки вверх и вниз относительно А.

    Потом я подумал, что этот класс было бы хорошо для хлебных крошек приспособить. Короче писал-писал, запутался в алгоритмах, более-менее работает, за исключением глубины вверх.

    + если довести его до ума, можно потом выделить общие части в родитель, и этого через него сделать подобный класс для категорий товаров.


    на работе у меня мат.пути через точку. Не пойму, почему они не запятую хотя бы выбрали. Теперь для FIND_IN_SET нужно сначала сделать REPLACE(`mpath`, '.', ','). Ебанатство да и только. Мне ваще не нравится.


    Сейчас делаю форум, пока вложенных разделов нет, но они нужны. Для него списки смежности не подойдут (из-за кеша): темы обновляются частенько, а мне нужно при выводе разделов еще линковать их с последней темой. Поэтому нужен вариант с быстрой выборкой. Разделов не слишком много, можно хоть вложенные множества делать. Но я наверно буду нормализованные мат. пути в таблице InnoDB. Для разделов новостей.. Х3, наверно тоже самое выбрал бы.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 23 января 2010 г. 13:36, спустя 1 час 7 минут 5 секунд

    я не понял фишки в сложность вверх )))))))))
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 23 января 2010 г. 13:50, спустя 14 минут 10 секунд

    Абырвалг, если честно то я подумал ты опишешь каждый из них, а потом в статейку оформишь? :)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 23 января 2010 г. 14:07, спустя 16 минут 58 секунд

    аа. Та я просто рассказал о том как делал, с какими сложностями столкнулся. Описание каждого мусолилось уже столько раз. И с тестами. На пхпклабе готовые примеры, быдлохабре.

    phpdude, ну не получается. Выбрать все, что выше - могу. А выбрать с определенной глубиной (не больше 2 уровней вверх) - нет.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!