ovvio che userei un db! l'organizzazione classica è quella gerarchica

ID
ID_Padre
Descrizione

partirai da quelli con ID_Padre=0

se poi selezioni l'id (ad esempio) 15, farai una select dei record con id_padre=15 e così via.

in generale, quelli con ID_Padre=ID_selezionato che, nel caso della proma select, è uguale a 0.

That easy!