Hola
davidj,
Esta pregunta se repite una y otra vez, parece que el buscador del foro no funciona :P, ahora en serio, te sugiero que busques info sobre los dos modelos mas utilizados,
adjacency list(lo que te propone leonardo) y
nested set, te dejo una referencia al primero(sin recursividad ;) )
http://jdbartlett.com/2008/01/15/tre...cy-list-model/
Saludos.