Самая простая для понимания реализация и одна из самых ресурсоёмких - через parent id.
Структура таблицы:
int id, int parent_id, varchar title, ... <всё остальное, что тебе надо, типа урла>
В поле parent_id хранится id узла, родительского по отношению к текущему.
В поле parent_id корневого узла стоит ноль или минус единица - кому как больше нравится.
Из базы данных дерево формируется рекурсивно, как и подсказал Neter.
По этому принципу (с небольшими дополнениями) строится иерархия форумов во многих форумных движках, включая и этот.