secondo me della sottocategorie ne puoi fare a meno.

facciamo un esempio

codice:
+-----+---------------+----------+
| id  |  descrizione  | genitore |
+-----+---------------+----------+
|  1  |  hardware     |     0    |
+-----+---------------+----------+
|  2  |  dischi fissi |     1    |
+-----+---------------+----------+
leggendo questa tabella sai che hai 2 categorie:

- hardware
- dischi

sai che hardware è una categoria di primo livello perchè ha genitore uguale a 0, mentre dischifissi sai che è una sottocategoria perchè ha genitore diverso da 0.
Inoltre sai che dischifissi è una sottocategoria di hardware perchè ha genitore = 1 cioè uguale all'id di hardware.

Ciao