ФорумПрограммированиеPHP для идиотов → Деревья для категорий интернет магазина.

Деревья для категорий интернет магазина.

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 15:42

    Списки смежности (Adjacency List)
    Вложенные множества (Nested Sets)
    Вложенные интервалы (Nested Intervals)
    Материализованные пути (Materialized Path)

    собственно что из этого лучше подойдет? Вложенность наверно до 4 может доходить, ну и все нюансы категорий интернет магазина.

    Просто я ничего кроме наверно Adjacency List не знаю. Так что, то что посоветуете, с того и начну свое обучение=)

  • adw0rd

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

    Spritz 14 марта 2010 г. 15:48, спустя 5 минут 38 секунд

    "Сиськи смежности" это сильно!
    adw/0
  • Абырвалг

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

    Spritz 14 марта 2010 г. 15:49, спустя 1 минуту 5 секунд

    я уже поднимал тему деревьев, давайте там продолжим?

    про вложенные интервалы - впервые слышу. Еще можно мат. пути вынести в отдельную таблицу
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 15:57, спустя 7 минут 52 секунды

    Нет, ну давайте серьезно =)
    я хочу Nested Sets использовать. На сколько такое представление деревьев будет тяжелей и неудобней других возможных представлений?

    P.S. Допускаю что вопрос гавно =)
  • Абырвалг

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

    Spritz 14 марта 2010 г. 16:06, спустя 9 минут 26 секунд

    вот не поленился б и сделал тестов шоле

    а вот и тему свою я нашел: http://pyha.ru/forum/topic/3786.0
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 16:17, спустя 10 минут 32 секунды

    я бы сделал тесты если бы умел всем этим пользоваться =)
    Как научусь так сделаю обязательно, если никто не расскажет
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 16:54, спустя 37 минут 41 секунду

    Еще 1 вопросик. Кто какой библиотекой пользуется?
    Адворд кидал сылочку
    http://php.russofile.ru/ru/authors/sql/nestedsets01#0301
    и еще 1 какую то видел. Или собственной реализации? Или мне тоже собственную написать?
    Спустя 108 сек.
    естественно это я про Nested Sets =)
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 18:28, спустя 1 час 33 минуты 20 секунд

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

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

    Spritz 14 марта 2010 г. 18:41, спустя 13 минут 27 секунд

    ваще операции над деревом одинаковые ж: добавить элемент, удалить ветку, выбрать путь от элемента к вершине и тд. То есть можно сделать 1 либу и несколько драйверов к ней.
    Спустя 39 сек.
    + можно абстрагироваться от базы. Может захочешь структуру хранить в Redis к примеру
  • mario

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

    Spritz 14 марта 2010 г. 19:01, спустя 19 минут 30 секунд


    Еще 1 вопросик. Кто какой библиотекой пользуется?
    Адворд кидал сылочку
    http://php.russofile.ru/ru/authors/sql/nestedsets01#0301
    и еще 1 какую то видел. Или собственной реализации? Или мне тоже собственную написать?
    Спустя 108 сек.
    естественно это я про Nested Sets =)
    для nestedsets думаю, легче написать свою… и понятнее будет самому как это работает :)
    Спустя 28 сек.

    ваще операции над деревом одинаковые ж: добавить элемент, удалить ветку, выбрать путь от элемента к вершине и тд. То есть можно сделать 1 либу и несколько драйверов к ней.
    Спустя 39 сек.
    + можно абстрагироваться от базы. Может захочешь структуру хранить в Redis к примеру
    хорошая идея )
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 15 марта 2010 г. 11:56, спустя 16 часов 55 минут 30 секунд

    Я хочу в своем классе абстрагироваться от сторонних классов работы с БД.

    Ну ладно, решение принято =)
    Тогда еще 1 вопрос.
    Как мне извлечь все дерево и вывести его в таком виде

    <ul>
    <li>первый пункт
    <ul>
    <li>первый под пункт</li>
    </ul>
    </li>
    </ul>


    и желательно без рекурсии
  • Абырвалг

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

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