Melhor Forma de Armazenar vinculos de duas tabelas em uma unica tabela

19/04/2014

0

Ae pessoa, boa tarde a todos...

Estou com um caso a resolver e gostaria da opinião de vocês:

Tenho duas tabelas distintas. Uma para notas Emitidas e outra para Notas Recebidas;

Preciso criar outra tabela onde será armazenado os números das notas fiscais tanto emitidas como notas fiscais recebidas de um determinado processo. Como seria a melhor estrutura para esta situação:

Senário 1. Criar campos nesta tabela de armazenamento onde vou armazenar estas notas da chave das notas emitidas e criar sua FK e criar outros campos das notas recebidas e também sua devida FK;

Senário 2. Criar campos únicos que possa atender as duas notas (tanto emitida como recebida), não criar FKs porque não permitiria, mais criar triggers nas tabelas de notas Emitidas e Recebidas para validar e evitar a exclusão;

Qual seria a melhor situação na visão de vocês?




Emerson

Emerson

Responder

Posts

19/04/2014

Marisiana Battistella

Olá Emerson!
No meu ponto de vista, é mais correto utilizar a solução que você apresentou como primeira opção acrescentando algumas coisinhas para completar:
Senário 1. Criar campos nesta tabela de armazenamento onde vou armazenar estas notas da chave das notas emitidas e criar sua FK e criar outros campos das notas recebidas e também sua devida FK;

Assim você terá uma tabela única para armazenamento das informações em comum dos documentos fiscais e apenas referenciará esse documento com FK nas tabelas que conterão os itens. Você pode acrescentar, na tabela documento, um atributo "tipo documento" para identificar se o documento é emitido ou recebido.
Lembrando que pode ser que seja necessário criar mais de uma PK nessa tabela de documentos como, por exemplo, a série do documento.
Recomendo que você analise se é necessário criar uma tabela para cada tipo de nota (emitida e recebida). Pode ser que criando apenas uma tabela seja possível armazenar as informações de todos os documentos e a forma de diferenciar elas, será pela informação que será informada no atributo "tipo documento".
Responder

19/04/2014

Emerson

Boa tarde Marisiana, obrigado pela colaboração..

É basicamente como você disse mesmo.. eu preciso e já tenho série nestes documentos. Em resumo ta assim:

Nota Fiscal Emitida=
Campos: Empresa, Numero e Serie como sendo PK;

Nota Fiscal Recebida=
Campos: Empresa, Fornecedor, Numero e Serie como sendo PK;


Ai nesta terceira tabela onde eu preciso armazenar todas as notas de um processo seja esta nota emitida e recebida é que fiquei na duvida.

Senário 1: Onde teria campos e FK específicos para Emitida e Recebidas..
Campos da Tabela:
Empresa
Numero
EmitidaEmpresa
EmitidaNumero
EmitidaSerie
RecebidaEmpresa
RecebidaFornecedor
RecebidaNumero
RecebidaSerie

Senário 2 onde teria campos únicos tanto para emitidas e recebidas e sem FK, trabalhando com trigger para alterações e exclusões:
Campos da Tabela:
Empresa
Numero
NotaEmpresa
NotaFornecedor
NotaNumero
NotaSerie

Responder

21/04/2014

Roniere Almeida

boa tarde, acompanhando o post, é de bastante interesse, se alguem puder postar a imagem da modelagem, ficaria grato. apenas para melhor entendimento.
Responder

23/04/2014

Emerson

Fiz um modelo de como seria a modelagem nos dois senários:

Senário 1: Onde a tabela que centraliza as notas tem campos especificos para cada tabela e com suas devidas FKs..
[img]http://arquivo.devmedia.com.br/forum/imagem/228065-20140423-150211.jpg[/img]

Senário 2: Onde a tabela que centraliza as notas tem campos unicos para armazenar os dois tipos de notas, com um campo de Status para dizer qual tipo de nota é e sem nenhuma FK, porque são os mesmos campos e não é permitido criar FKs.. Tratamento de Exclusão e Alteração ficaria a cargo do sistema neste caso.
[img]http://arquivo.devmedia.com.br/forum/imagem/228065-20140423-150408.jpg[/img]

Deu pra entender?
Responder

24/04/2014

Jefferson Santos

Vamos lá, não li todo o topico somente a sua primeira duvida.
A meu ver o ideal seria criar as tabelas:

NFE

PK - ID_NFE -- Numero de NFE

Processo_NFE

PK - ID_Processo -- Sequencia de Notas Fiscais enviadas para receita
PK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE

NFE_Autorizada
PK - ID_Autorizada
FK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE

NFE_Rejeitada
PK - ID_Rejeitada
FK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE

Responder

24/04/2014

Emerson

Vamos lá, não li todo o topico somente a sua primeira duvida.
A meu ver o ideal seria criar as tabelas:

NFE

PK - ID_NFE -- Numero de NFE

Processo_NFE

PK - ID_Processo -- Sequencia de Notas Fiscais enviadas para receita
PK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE

NFE_Autorizada
PK - ID_Autorizada
FK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE

NFE_Rejeitada
PK - ID_Rejeitada
FK - sChavedeAcesso -- Chave de Acesso (XML)
FK - ID_NFE -- Numero de NFE



Jefferson, obrigado pela Ajuda, mais não é isso não...
Responder

24/04/2014

Jefferson Santos

Você diz Cupom Fiscal?
Responder

24/04/2014

Emerson

Você diz Cupom Fiscal?


Não... Minha duvida é qual a melhor forma de montar a estrutura de uma tabela que tem por objetivo armazenar as notas emitidas e recebidas de um determinado processo...

As tabelas de notas, tanto as Emitidas com as Recepcionadas já estão prontas... agora preciso de uma terceira tabela que armazene o numero de varias destas notas.. todas que estiver ligadas a um processo... minha duvida é quanto as colunas.. se crio as colunas separadamente para notas Emitidas e Notas Recebidas ou se crio colunas únicas... o que impossibilitaria a criação de FK entre as tabelas.;..
Responder

24/04/2014

Jefferson Santos

Você diz Cupom Fiscal?


Não... Minha duvida é qual a melhor forma de montar a estrutura de uma tabela que tem por objetivo armazenar as notas emitidas e recebidas de um determinado processo...

As tabelas de notas, tanto as Emitidas com as Recepcionadas já estão prontas... agora preciso de uma terceira tabela que armazene o numero de varias destas notas.. todas que estiver ligadas a um processo... minha duvida é quanto as colunas.. se crio as colunas separadamente para notas Emitidas e Notas Recebidas ou se crio colunas únicas... o que impossibilitaria a criação de FK entre as tabelas.;..


Nesse caso que estão numa mesma tabela pode criar uma simples coluna Situação e utilizar a constraint check para diferencia-las.
Responder

05/05/2014

João Françozo

Bom dia Emerson,
Seus dados vão ficar em redundância nos dois modelos, campos repetitivos (total produtos, e total nota fiscal) aconselho fazer uma outra modelagem de dados para evitar essa situação.

Att
João Antonio
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar