Eu armazenaria toda estrutura do NCM como string [1] [2]. É mais simples.

[1]
http://emersonhermann.blogspot.com.br/2012/09/consulta-sql-de-plano-de-contas-query.html
[2]
http://emersonhermann.blogspot.com.br/2013/01/desenvolvendo-querys-sql-para-razao-e.html

Em 20 de abril de 2016 09:17, Márcio A. Sepp <[email protected]>
escreveu:

>
>
> 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
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a