За последние 24 часа нас посетил 24141 программист и 1655 роботов. Сейчас ищут 765 программистов ...

Древовидная структура папок

Тема в разделе "PHP для новичков", создана пользователем kowapos, 30 июн 2014.

  1. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    Здравствуйте, подскажите, как спроектировать таблицы в базе, что бы была возможность создавать вложенные папки.

    например:
    папка1 имеет дочерние папки:
    папка2 и папка3
    папка3 имеет дочернюю папку папка4 и так бесконечно.

    пробовал такое решение:

    [​IMG]

    но мне кажеться, что такое не катит. или катит. вообщем, проконсультируйте или киньте ссылку, найти не могу ((
     
  2. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Катит, не знаю как где, но в ModX точно есть документ родитель. Годная структура.
     
  3. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    Ну, а как получить родительскую папку родительской папки? Или получить все дочерние папки?
     
  4. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    1. select t2.* from mytable t1, mytable t2 where t1.id= <родитель заданной папки> and t1.parent = t2.id
    2. select * from mytable where parent = <id заданной папки>
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Ну зачем вам в бд копия файловой структуры?
    Для хранения большого числа файлов в разных папках в целях производительности?
    Для последней задачи можно строить путь из сгенерированного на сервере имени файла.
    К примеру, есть файл qwerty.jpg. Он лежит в каталоге /files/q/w/e/qwerty.jpg. Для того чтобы построить путь вашему классу для работы с файлами будет нужно лишь имя файла.

    upd. Так понял, что тс неверно выразился и имеется ввиду иерархия контроллеров, а не "папок".
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    гугли "дерево списки смежности" или "mysql adjacency list" или "php adjacency list" — информации просто вагон!

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