Реализовываю базовые функции форума. Сколько раз не подходил к реализации форума, то всегда есть сложности. А именно не дают покоя следующие вопросы:
1. У каждой категории форума есть "Последнее сообщение". Вроде бы понятно, что можно просто сохранять идентификатор последнего поста в этой категории. То есть нам нужно будет каждый раз обновлять категорию, когда дело касается добавления/редактирования/удаления сообщения в этой категории.
Но все становится еще веселее, когда мы добавляем подкатегории в нашу категорию, где тоже есть темы и сообщения. Получается, что мы теперь должны каждый раз при добавлении/редактировании/удалении сообщения, пройти всю цепочку категорий, чтобы обновить идентификатор последнего сообщения.
По-моему это глупо. По крайней мере, если смотреть со стороны целостности данных. Ибо всегда найдется забытое действие, которое разрушит нашу целостность.
Еще есть идея: не хранить в БД идентификатор последнего поста у категории, а каждый раз доставать его из общего списка сообщения по идентификатору категории и сортировке по дате создания. Разумеется, кешировать это дело на некий период.
2. У каждой категории форума есть кол-во сообщений и тем. Как лучше сделать? Каждый раз подсчитывать по новой с кешированием, либо хранить в БД и при каждом добавлении/редактировании/удалении инкрементировать счетчик.
И то и другое.
Сделать кэширование, причем при каждом добавлении/редактировании/удалении кэш сбрасывается.
Если где-то забудем - не беда, просто цифра повисит немного дольше. Потом заметим и исправим.
Про сложности первого вопроса, куда и зачем там ходить - не понял.