Проблема рубрикации
От: azalt  
Дата: 09.12.03 11:59
Оценка:
Был бы очень признателен за любую помощь.

В результате разработки информационного новостного портала появилась алгоритмическая проблема взаимодействия с MySQL.
Рубрикация организована следующим образом (таблица: важнейшие поля):

TABLE rubric (рубрики): rubric_id, rubric_parent (id родительской рубрики)
TABLE rubric_article (таблица связей рубрик со статьями): rubric_article_id, rubric_id (id рубрики), article_id (id статьи)
TABLE article (статьи): article_id, article_type (тип(раздел) статей)
TABLE type (типs(разделs) статей): type_id

Т.е. иерархия рубрик устроена "линейно": каждая рубрика знает только своего родителя. У корневой рубрики родитель 0.
Необходимо при входе в раздел статей (за него отвечает type_id) выводить иерархически рубрики, в которых есть статьи, относящиеся к данному разделу (по article_type).
Выводить всё это надо не в виде дерева, а поступенчато: -> раздел -> темы уровня 0 (с родителем 0) -> темы уровня 1 (с выбранным родителем) и т.п. Так можно опускаться на произвольную глубину.
Проблема заключается в том, что некоторые разделы могут непосредственно не содержать статьи, а содержать их в своих подрубриках. Узнать при этом все рубрики заданного уровня (т.е. по заданному родителю), содержащие где-то в глубоких своих подрубриках-потомках статьи из данного раздела — задача нетривиальная.
Сайт планируется быть активно посещаемым, поэтому большое кол-во обращений к базе каждым пользователем (а оно в тривиальном решении будет сильно расти с каждой новой рубрикой) недопустимо.
Какие будут мысли, коллеги?

Заранее спасибо за любую поддержку!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.