Para el modelo de
rgali se me haría un poquito más formal que lo llevaras con una DB que te respetara la estructura del modelo, por ejemplo en MySQL con tablas InnoDB.
Así, puedes tomar desde la misma base de datos decisiones imporantísimas que garantizarían que tus datos no se corrompieran.
(perdón por el pulso de maraquero)
Por ejemplo, si alguna vez actualizaras una categoría, podrías decidir que tus subcategorías se actualizaran.
O si quisieras borrar una categoría, pero ésta tuviera subcategorías, que no te lo permita.
O bien, que si quieres borrar una categoría, que se borren todas sus subcategorías para que no queden hijos huérfanos.
Regresando a lo del diagrama, resulta fácil ver cómo esa subcategoría se puede transformar, a su vez, en una categoría para sus propias subcategorías.
Así podrías tener la cantidad de subcategorías que tú desees.