Dúvida sobre melhor implementação de estrutura hierárquica

1 resposta
Marcelo_Magalhaes

Ola comunidade… estou com uma dúvida sobre qual seria a melhor forma de implementar uma estrutura de dados hierárquica de 3 níveis. Setor econômico, Sub-setor econômico e Segmento economico. Tenho que atribuir a cada empresa cadastrada uma classificação de atividade econômica baseado nos três níveis que comentei.

No primeiro nível terei N valores (código + descrição)
No segundo nível terei N valores (código + descrição) e associado a somente um código no primeiro nível
No terceiro nível terei N valores (código + descrição) e associado a somente um código no segundo nível

Já percebi que a melhor forma de “armazenar” a classificação econômica será usando somente uma associação com a classe SegmentoEconomico (terceiro nível), visto que ela teria uma associação com um Sub-setor econômico que por sua vez teria uma associação com um Setor econômico… agora que começam as dúvidas :slight_smile:

Esta forma que descrevi acima é a mais trivial, contudo sempre vou ter que fazer 3 joins para ter as 3 informações e vou ter que ficar navegando pelo grafo afim de saber a descrição de cada código. Pensei em usar inner class… criariam uma outter class chamada ClassificacaoEconomica e dentro dela 3 inner class (os 3 níveis), tem como? Fica mais complicado? Tenho ganhos?

Aceito outras sugestões. Lembrando que deve ser uma solução simples pois se trata somente de uma classificação… estas classes dificilmente terão “métodos de negócio ou alguma inteligência”.

Abraço a todos!!!
Marcelo Magalhães - RJ

1 Resposta

rmendes08

Cara, classes internar são classes também, e em termos de mapeamento objeto-relacional isso não faz diferença nenhuma. Na prática, não tem um jeito muito diferente de fazer isso não.

Um jeito simples, mas que perde flexibilidade seria modelar setor, sub-setor e segmento como enumerações e criar campos de cada um desses tipos em Empresa. Mas nesse caso, você perde a estrutura hierarquica e teria que validá-la na mão.

Criado 30 de julho de 2012
Ultima resposta 31 de jul. de 2012
Respostas 1
Participantes 2