bueno, yo he usado esa forma con mas de 15 categorias y unas 50 subs y sin problemas
usando solo 3 campos
idcategoria el id como identificador
categoria el nombre de la categoria
parentid el padre de la categoria, si es >0 entonces es sub
Otra forma? no se, quizas getrows pero nunca las he usado ni se si serviria, seria cosa de checar, aqui un buen link para aprender un poco de como se usa el getrows
http://www.aspfacil.com/articulos/110201.asp