| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Иерархичные комментарии |
| Автор: MPx 21.5.2008, 04:21 |
| Приветствую. 4 часа ночи, не могу додуматься... Задача у меня: возможность добавления комментариев с неограниченной вложенностью, т.е. чтобы на любой комментарий можно добавить свой комментарий и т.д. Пример можно посмотреть допустим на этом сайте: http://habrahabr.ru/blog/i_am_clever/42666.html. Текущая стр-ра БД: comment_id | user_login | post_id | comment_parent | comment_rating | comment_text | comment_date comment_id - idшник коммента; user_login - кому принадлежит коммент; post_id - какому сообщению на сайте принадлежит этот комментарий; comment_parent - к какому комменту привязан; comment_rating - общий рейтинг коммента; comment_text - текст коммента; comment_date - дата. Как видите, на данный момент сделал привязку коммента к комменту. Но дело в том, что неизвестно, на каком уровне находится коммент, соответственно, неизвестно какой отступ ставить и прочее. Т.к. найти родителя допустим коммента для третьего уровня крайне сложно (можно рекурсивно конечно, но имхо это неверено с точки зрения поедания ресурсов). Что можете предложить? Добавить для коммента, который является комментом на другой коммент, поле уровня? Аля comment_level? Извините, если сумбурно объяснил. Голова Спасибо за помощь. |
| Автор: skyboy 21.5.2008, 08:15 |
если проблема - именно в отступе, то скажи, так ли тебе надо знать "абсолютное значение порядка вложенности" или достаточно того, что "вот это - вложеннее вот того"? вообще, неясно, что тебе необходимо. в любом случае, кроме хранения идентификатора предка возможны ещё структуры nested sets(поиская в google) и materialized path(когда хранится весь список комментариев-предков для каждого комментария). соответственно, в зависимости от того, какая перед тобой стоит задача(выводишь ли ты только коммнетарии определенного комментария или все "дерево", какя информация тебе нужна для вывода - например, уровень вложенности и тому подобные вопросы, ответы на которые знаешь только ты сам), выбирается наиболее подходящая структура хранения. но даже у тебя с твоей структурой, к слову говоря, можно пользовать не рекурсивное построение дерева. если у тебя кроме mysql есть ещё язык программирования(например, PHP). смотря, как реализована рекурсия. |