информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медЗа кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Post ID менять не надо, а сделать его счетчиком и примари 17.06.03 21:26  Число просмотров: 1402
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Ситуация следующая:
> я изначально наивно пологал, что сабж выполняется, но
Мое имхо:
Сами данные не сортируются, сортируется индексный файл. Как аналогию можно представить связный список. Последовательность нод этого списка в памяти может быть любой, но при помощи связей список можно отсортировать по любому критерию не меняя положения самих нод.

> поговорив с умными людьми, которые мне сообщили, что это не
> часть sql и поэтому не стоит опираться на физическое
> представление базы данных ( хотя проведя ряд тестов, я
> заметил именно сабжевое поведение mysql).
Таких индексных файлов может быть много, поэтому таблица может быть одновременно отсортирована по многим полям. Соответственно может быть произведен эффективный поиск по любому из них или по их комбинации.

> если это не так, то возникает вопрос как реализовать
> древовидную структуру форума. Можно вводить разные поля,
Вообще то ветвистые деревья (больше двух детей) реализуются хранением в каждой ноде списка указателей на детей. В твоем случае нужно нечто вроде branch id для каждого поста. Можно назвать его и thread, только я привык понимать под этим словом все дерево, начиная от корня, а в данном случае оно хранит только ветку со своими наследниками. БранчИД тоже надо делать в виде счетчика, чтоб каждый новый создаваемый бранч имел новый id. В записи для поста хранить кроме собственного branch id еще и childs branch id.

Работать это должно так. При создании поста (а можно и при первом ответе на него) ему в childs branch id записывается новый (уникальный) id из счетчика. Таким образом создается новая ветка в дереве. Когда на пост с валидным БранчИД дается ответ, этому ответу присваевается БранчИД со значением child branch id своего родителя. Ну и дальше читай с начала этого параграфа :-)

Для удобства навигации по дереву можно добавить parent post id. Не branch id, так как в родительской ветке может быть много братьев (родительского поста) и тогда непонятно к какому именно относится данный пост.

При такой схеме весь форум тоже может быть представлен в виде ветки например с ID = 1, доски - дети форума, ну соответсвенно все треды - дети досок.

Выбрать все дерево одним запросом не получится (насколько я помню SQL не поддерживает рекурсию). Но с другой стороны выборка-то будет делаться из php или perl-а, который вполне способны на оную.

> Предложения, коментарии ?
После добавления поста не надо никаких апдейтов. А сортировать посты с одинаковым branch id можно например по post id или по времени или как угодно еще.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach