За последние 24 часа нас посетили 21720 программистов и 1021 робот. Сейчас ищут 762 программиста ...

Управление иерархической структурой документации (алгоритм)

Тема в разделе "Решения, алгоритмы", создана пользователем 027, 28 июл 2015.

  1. 027

    027 Активный пользователь

    С нами с:
    19 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Доброго всем.

    Сочиняется редактор документации с иерархической структурой нумерации разделов и статей. Формат:
    Код (Text):
    1.  
    2. А
    3. - А.1
    4. -- А.1.1
    5. - A.2
    6. ...
    7. B
    8. - B.1
    9. ...
    с неограниченной глубиной вложения. Первый уровень нумерации — буква.

    Требуется придумать юзерфриндли алгоритм управления разделами и статьями, т.е. автонумерация, и автоматический пересчет внутренних ссылок (типа см. главу/раздел такой-то номер).

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

    Данные хранятся в реляционной БД, конкретный движок не должен играть роли. Пишу на Codeigniter, используя Active Record, если это имеет значение. Прикручен визуальный редактор Wymeditor.

    Нагрузка на сервис будет никакая. 0,1 девелопера в месяц.

    Соображения:
    • в таблице БД должны храниться уникальный id записи, id родителя и порядковый номер среди объектов этого уровня
    • статья это или раздел, никакого принципиального различия быть не должно (получаем гибкую структуру)
    • статья может быть пустой (по сути заголовок раздела), а раздел не иметь потомков (то ли раздел, то ли заготовка будущей статьи)

    Сомнения:
    • может, не надо sql? Может, json какой-нить удобнее? (знаком на примитивном базовом уровне)
    • таблица может быть одна на всё, или удобнее (кошернее, правильнее) вынести метаданные в отдельную таблицу?
    • или ткните носом в готовые решения, плиз, а то я что-то забарахтался в поиске
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Управление иерархической структурой документации (алгори

    типичная древовидная структура. для хранения деревьев в БД есть много решений.
    гуглим:
    -Adjacency List
    -Materialized paths
    -Nested Sets
    и т.д.
    выбираем то что подходит лучше
     
  3. 027

    027 Активный пользователь

    С нами с:
    19 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Re: Управление иерархической структурой документации (алгори

    О! Вон оно как называется, чего я наполовину изобрел! Ы
    Потом впал в сомнения и начал изобретать, что описано в первом посте.

    Спасибо за ключевые слова! Как обычно, их-то и не хватает чайнику. Тут же нашлась либа Nested Sets для Кодоподжигателя, довольно свежая.