Ir para conteúdo
  • 0

Relacionamento Factless fact


renanfelipes
Ir para solução Solucionado por Michele ,

Pergunta

  • Alunos

Pessoal, acabei de assistir a aula de modelagem que fala sobre factless fact. mas fiquei com uma duvida. 

 

Tenho uma tabela de Pessoas, que é uma tabela geral de cadastros de CNPJ/CPF. 

O que determina se o registro é cliente ou representante é uma coluna(TIPO, se 1 é cliente, se 2 é representante) que faz este controle.

Porém na mesma tabela tenho uma coluna de ID_REPRESENTANTE(que na verdade é o ID_PESSOA do representante).

separei em duas tabelas, uma para CLIENTE e outra para REPRESENTANTE.

o banco de dados possui uma tabela de apoio para fazer o controle de qual será seu representante e por qual filial será atendido.

que até onde entendi da aula, seria a factless fact do exemplo das aulas do curso completo. porém não foi abordado o quesito de filial.

que no final tenho as 4 tabelas abaixo

image.png.52dff728f2df32fd81d4be68f9110938.png


Dito isto tenho o seguinte cenário:

o banco de dados possui a separação por FILIAIS, ou seja:
posso ter o mesmo cliente sendo atendido por representantes diferentes, de filiais diferentes. Conforme a imagem abaixo.

image.png.141fffc24a7e131dc0a9e59c5b22ba78.png 

e também, o mesmo representante atendendo o mesmo cliente por FILIAIS diferentes. Conforme imagem abaixo

image.png.3aad0e4f85c655957c1086326baa63b2.png

 

Diante disto, qual seria a maneira correta para fazer o relacionamento entre a tabela de dCliente, dRepresentante e dFilial + essa factless fact que chamo de "Cliente-representante", para chegar na fVenda ?

 

entendo que preciso fazer a ligação de dCliente com a "cliente-representante" e a "cliente-representante" com a dRepresentante. Mas ai que vem a duvida!

Devo também fazer a ligação de dFilial com "cliente-representante" ?

veja o modelo abaixo:

image.thumb.png.503ffaa6f57e2da2a7432e0e2994ca02.png

Desta forma está correto, ou estou gerando uma ambiguidade entre dFilial e cliente-representantes / fVenda ?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Olá @renanfelipes!

Pelo que li aqui "factless fact" seria a mesma coisa que bridge table, pelo menos não entendi se existe uma diferença.

Analisando o que você colocou, a meu ver não teria necessidade de relacionar as dimensões entre elas (bridge table), mas sim cada uma delas com a Fato, removendo das suas dimensões colunas desnecessárias ou que possam gerar duplicidades, de modo que essas dimensões sempre tenham uma única linha por ID.

Ao puxar as colunas das Dimensões e cruzar com as medidas que serão montadas na sua Fato, vai funcionar tudo direitinho graças ao relacionamento feito, exemplos:

  • Vendas por Cliente
    • dCliente[Nome]
    • Medidas[Quantidade]
    • Medidas[Total Vendas]
       
  • Vendas por dRepresentante
    • dRepresentante[Nome]
    • Medidas[Quantidade]
    • Medidas[Total Vendas]
       
  • Vendas por dFilial
    • dFilial[Nome]
    • Medidas[Quantidade]
    • Medidas[Total Vendas]

Se não for isso talvez não tenha compreendido, mas no seu lugar eu faria o simples primeiro, Dimensões > Fatos, criaria as medidas que você quiser testar como Soma de Vendas, Quantidade Vendida e etc e então faria os agrupamento que você quiser, por Representante, por Cliente, por Filial e vai batendo os dados, em teoria seria para bater pois você tem todas essas chaves na sua Fato, entendeu.

Uma bridge table seria necessária, por exemplo, em um cenário com contas bancárias, onde uma mesma pessoa pode ter N contas e não teria como deixar a informação de conta bancária no cadastro de Pessoa, então ficaria algo assim: dPessoas > fPessoasContas > dContas.

Espero ter ajudado de alguma forma 🙂

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...