Suppose you have a forum with many sub-forums, and each sub-forum has
many categories (or sub-sub-forums), and each category may or may not
have many sub-categories (or sub-sub-sub-forums).
Will a topic belong to the sub-category AND category AND sub-forum; or
only to a sub-category, that will in turn belong to a category that will
in turn belong to a sub-forum?
In parts this may depend on the table structure.
I would avoid having too much tables here (forum + category) and
if possible go for a single table.
But in general avoid duplicate data. If a topic is linked to
a sub category and this sub category is already linked
to a category, there is not much need in adding another
field to the topic. That would just bring the risk, that the
data gets inconsistent if you need to relink the subforum
You should provide a function that for a given forum gets the ids of
all subforums (including sub sub forums, categories...) and
then get all the topics linked with those forum ids
I'd go for self-referencing Forum and Category, to allow for
children / grand / etc in the same tables.
After that, where the Topic belongs to is a matter of how do you
traverse the tree.