Há muitas maneiras de armazenar hierarquias em bancos de dados SQL. Qual escolher depende de qual produto DBMS você usa e como os dados serão usados. Como você usou a tag MSSQL2005, acho que deveria começar a considerar o modelo "Lista de Adjacências"; se você achar que ele não funciona bem para sua aplicação, dê uma olhada na comparação de Vadim Tropashko, que destaca as diferenças entre os modelos com foco em várias características de desempenho.