вот например я хочу написать форум на пхп, как мне в нём лучше сделать иерархию в базе данных?
Если не нужно посылать то тогда поставь какой-нибудь форум и посмотри как там все организовано... Вопрос весьма сложный и специфический(для каждой задачи свои принципы). Если совсем обобщить то:
в общем случае поля базы имеют вид: 
=============+==============+=======+
 Идентификаторы |    Служебная инфа  | Значения|
=============+==============+=======+
 Идентификаторы используются для сортировки, фильтрации и группировки данных, служебные поля несут идентификационную нагрузку, над полями-значениями выполняются различные арифметические действия.