Pessoal,

 

Gostaria de compartilhar um problema e verificar se alguém pode me dar uma 
opinião.

 

Tenho a necessidade de associar características a um NCM 
<http://classificacaodemercadorias.com.br/como-e-a-estrutura-e-composicao-da-nomenclatura-comum-do-mercosul-ncm.html>
 . Um código NCM é formado da seguinte forma:

 

SEÇÃO           I         DEFINIÇÃO

Capítulo                  01                               Animais vivos

Posição                       0104                Animais vivos das espécies 
ovinas ou caprinas

Subposição     0104.10                      Ovinos

Item                        0104.10.1           Reprodutores de raça pura

Subitem                      0104.10.11      Prenhe ou com cria ao pé

 

 

Acontece que a característica pode estar associado a qualquer nível do NCM. O 
fato é que quando eu fizer uma consulta a um código 0104.10.11, tenho que 
retornar as características que estão associadas diretamente ao código e também 
as características que estiverem associadas aos códigos de hierarquias 
superiores.

 

Minha dúvida está em qual seria a melhor forma de armazenar este código, para 
que as consultas tenham a melhor performance.

 

Armazenar cada pedaço do código em uma coluna separada, ou gravar em um único 
campo string?

 

Existe alguma forma melhor de executar a consulta (performance) do que a 
abaixo? 

 

select * from ncmcaracteristica

Where

subitem = '0104.10.11'

OR item = '0104.10.1'

OR subposicao = '0104.10'

OR posicao = '0104'

OR capitulo = '01'

 

 

Dê uma olhada na cláusula with recursive. Dependendo como está a sua estrutura, 
pode ser aplicado no seu caso.

http://www.postgresql.org/docs/9.5/static/queries-with.html

 

 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a