En una tabla, cada categoría tiene un campo (categoria_padre) que indica el número de la categoría padre a la que pertenece.
Cuando quieras pintar las subcategorías de una categoría X, haces una consulta a la base de datos, seleccionando aquellas categorías que tienen en el campo categoria_padre igual al valor X.
Y esto lo puedes repetir para cada nivel de presentación.
Esto es lo que se llama en Estructuras de Datos
Base de datos jerárquica. En la versión inglesa de la página tienes un pequeño ejemplo.