Все зависит от ждух факторов:
1. уровень вложености
2. частота и степень изменения
Пути решения могут быть разные в зависимости от необходимости. Если меню ожидается в 2-3 уровня, можно хранить в базе предка и уровень вложености. Если уровень неизвестен, тогда можно использовать метод nested sets (
www.getinfo.ru/article610.html). Есть еще пара методов, но на мой взгляд больше из разряда красивых теорий, чем практического применения.