Esistono molti modi per archiviare le gerarchie nei database SQL. Quale scegliere dipende dal prodotto DBMS utilizzato e da come verranno utilizzati i dati. Poiché hai utilizzato il tag MSSQL2005, penso che dovresti iniziare a considerare il modello "Lista di adiacenza"; se ritieni che non funzioni bene per la tua applicazione, dai un'occhiata al confronto di Vadim Tropashko che mette in evidenza le differenze tra i modelli concentrandosi su molteplici caratteristiche prestazionali.