none
Modelagem de tabelas Fato RRS feed

  • Pergunta

  • Boa tarde,

     

    Estou tentando criar um pequeno DW a partir da minha base relacional.

    Já modelei as dimensões e como fatos terei apenas vendas.

    Minha dúvida é: criei uma tabela FactVendas que irá conter, em cada linha, cada produto vendido. Até aí tudo bem.
    Na minha base relacional eu tenho uma tabela onde controlamos as Formas de Pagamento utilizadas em cada venda. Porém não tenho a forma de pagamento por item e sim, por venda.

     

    Eu não consigo colocar isso em apenas uma tabela fato, já que não tenho a forma de pagamento por item e sim por venda.

    Dessa maneira penso que devo criar duas tabelas fato separadas, por exemplo, FactVenda e FactFormaPagamento. Mas ambas são tabelas de venda, ou seja, o mesmo requisito de negócio..

     

    Isso não estaria errado?

     

    Obrigada.

     

     


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    quinta-feira, 5 de julho de 2012 21:01

Respostas

  • Correto Mariana!

    Neste caso vc tem que separar mesmo... não tem jeito! Eu particulamente nunca trabalhei com uma modelagem como esta, mas no seu caso vc deve trabalhar com os dois valores. Eu recomendo renomear os valores como "Valor por Produto" e "Valor por Forma de Pagamento" e trabalharia com as duas medidas no seu datamart. Só tome cuidado no seu processo de carga de dados (ETL) para que os valores das duas tabelas sempre batam. Por exemplo, monte uma task onde é feito um agrupamento por idVenda e verifique se os valores totais estão exatamente iguais entre as duas tabela fato.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 6 de julho de 2012 18:29

Todas as Respostas

  • Oi Mariana

    Criar uma fato, duas ou mais e o que vai conter em cada uma delas depende do contexto do negócio e da forma como a gestão, que necessita desta informação, precisa analisar. Já construí fatos que foram utilizadas para identificar clientes por forma de pagamento, desta forma conseguindo identificar os produtos que eles compram, ou seja, quais produto geralmente saem com pagamento a vista (em dinheiro), quais geralmente saem por cartão de crédito, e assim por diante. Isso gera uma estrategia para o departamento de marketing e vendas.

    Como te disse depende da necessidade que cada gestão aplica.

    Diego Freitas

    quinta-feira, 5 de julho de 2012 21:44
  • Mariana, bom dia.

    Não precisa criar um nova tabela fato apenas para ser ligada em Formas de Pagamento de vendas.

    Neste caso vc precisa apenas incluir o idFormaDePagamento em sua tabela fato e criar uma dimensão para a mesma.

    Os dados ficariam assim:

    IdVenda IdProduto idFormaPagamento Valor
    1 1 1 10
    1 2 1 5
    1 3 1 3
    2 2 4 25
    2 5 4 67

    O valor do id da forma de pagamento se repitiria entre os diversos produtos de uma venda.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 6 de julho de 2012 14:22
  • Eduardo e Diego, obrigada pela ajuda.

    Na verdade não conseguirei fazer numa tabela só porque não tem como eu dividir os valores de cada forma de pagamento, pelos produtos. Exemplo: se eu tenho 3 produtos na venda totalizando 50 reais e eu paguei com débito (20,00) e dinheiro (30,00). Não consigo dividir esses 20 reais em algum produto da venda e os 30,00 em outros.. ficaria incorreto.

    É errado, eu modelar duas tabelas separadas, sendo que o negócio é o mesmo? (Vendas)

    Obrigada.


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 6 de julho de 2012 17:25
  • Correto Mariana!

    Neste caso vc tem que separar mesmo... não tem jeito! Eu particulamente nunca trabalhei com uma modelagem como esta, mas no seu caso vc deve trabalhar com os dois valores. Eu recomendo renomear os valores como "Valor por Produto" e "Valor por Forma de Pagamento" e trabalharia com as duas medidas no seu datamart. Só tome cuidado no seu processo de carga de dados (ETL) para que os valores das duas tabelas sempre batam. Por exemplo, monte uma task onde é feito um agrupamento por idVenda e verifique se os valores totais estão exatamente iguais entre as duas tabela fato.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 6 de julho de 2012 18:29
  • Perfeito Eduardo!!

    Muito obrigada!!

    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 6 de julho de 2012 18:34