На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> Теория: иерархия (дерево) в БД
     Добрый день, коллеги.
    У меня есть данные, представленные в виде дерева. Надо сохранить в БД. Как?

    ЗЫ. У меня уже есть решение, но хотелось бы услышать, как это реализовали бы вы.
      Дерево может быть переведено в "плоскую таблицу". Для этого надо произвести следующие действия:

      1) Каждый узел должен получить уникальный номер
      2) Сделать таблицу типа

      ----------------------------------------------------------------------------
      Уникальный номер||Ссылка на родительский номер||Значение узла
      ----------------------------------------------------------------------------

      PS. Вообще-то хранить древовидные структуры в таблицах не очень хорошо, для этих целей например XML придумали  
        Я именно так и сделал. Про XML, кстати, тоже не забыл ;)
          http://www.sql.ru/search/search.asp?wci=rcdoc&url=http\%3A\%2F\%2Fwww\%2Esql\%2Eru\%2Fforum\%2Factualthread\%2Easpx\%3Fbid\%3D\%2D99\%26tid\%3D12217&ex=1&pool_size=10&is=ex\%5Fsql&context=\%C4\%E5\%F0\%E5\%E2\%FC\%FF&contextcond=phrase&title=1&orderby=\%24sysdate&doc_per_page=10&output=full
            Усложним задачу: нужно иметь возможность не только менять родителя для ноды среднего уровня, но и сортировать детей одного родителя. Ну как?

            ЗЫ. XML пока не трогаем, только "плоскую" таблицу.
            Сообщение отредактировано: e-yes -
              А что квери типа "select... Where ... Order By..." Делать запретили? Что то я не пойму, что именно не получается сделать обычной кверёй?
                order by... что??? айди элемента?? Не прокатит.
                  Что-то я не пойму чего надо, отсортировать узлы одного родителя в алфавитном порядке? Пожалуйста:

                  ExpandedWrap disabled
                    <br>Select ЗначениеУзла <br>Where СсылкаНаРодительскийНомер=ЧтоТо<br>Order by ЗначениеУзла<br>


                  Отсортировать всё дерево в алфавитном порядке? Пожалуйста:

                  ExpandedWrap disabled
                    <br>Select ЗначениеУзла <br>Order by СсылкаНаРодительскийНомер, ЗначениеУзла<br>


                    Надо не сортировать в алфавитном порядке, а дать возможность пользователю сортировать узлы мышой. В принципе, я решил это через дополнительное поле, указывающее относительный индекс элемента. Но что-то мне это не очень понравилось, может есть какие-то еще идеи?
                      Добавь ещё одно поле, которое будет задавать порядок.
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0343 ]   [ 15 queries used ]   [ Generated: 23.04.24, 13:41 GMT ]