Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Ola pessoal tudo bem?
Pelo que eu entendi de criar uma chave unica,
-é uma boa pratica
-é bom evitar chave sintética
-existem algumas maneiras de resolver chave sintética, JOIN, Concatenate, Link Table
Existe uma maneira de resolver a chave sintética que seja melhor em todos os casos?
Quais seriam as vantagens e desvantagens de cada uma dessas opções?@@
Tabela sintética pode ser um problema na sua aplicação por gerar resultados não esperados em seus relatórios e também por diminuir a performance de sua aplicação. É aconselhável não deixar que essas tabelas se formem em sua aplicação.
O melhor em todos os casos não existe, cada caso é um caso e pode ser resolvido de uma ou de N maneiras diferentes.
ANSI JOIN
Pode ocorrer perde de dados (Ex: Vendas x Orçamentos - Existem clientes que foram orçados e não venderam, como tratar esse caso?)
Pode se tornar um problema se as tabelas não tem um relacionamento um-para-um (1:1)
CHAVES CONCATENADAS
Mesmo problema do ANSI JOIN
CONCATENATE (TABELAS)
Em alguns casos você pode perder associações importantes em sua modelagem
LINK TABLE
Mais trabalhoso de ser implementado
Maior tempo de execução de script
Peso um pouco maior na performance de utilização (em relação aos outros casos)
Opinião: Eu procuro utilizar, na maioria das vezes, LinkTable. Me adaptei bastante e consigo resolver 99% das modelagens. (PS: mas LinkTable não faz milagre)
Bom dia.
Vou aqui colocar apenas a minha opinião, no entanto têm pessoas na comunidade com conhecimento maior:
É realmente uma boa pratica, no entanto não é somente bom evitar chave sintética. A chave sintética pode alterar os resultados e com certeza alterará tempos de resposta de carga e de objetos. Para mim é proibitivo.
Quanto a maneiras de resolver chave sintética, cada situação é diferente.
Eu gosto de trabalhar com concatenação, no entanto sempre carregando um campo que marca a origem dos dados.
Tabela sintética pode ser um problema na sua aplicação por gerar resultados não esperados em seus relatórios e também por diminuir a performance de sua aplicação. É aconselhável não deixar que essas tabelas se formem em sua aplicação.
O melhor em todos os casos não existe, cada caso é um caso e pode ser resolvido de uma ou de N maneiras diferentes.
ANSI JOIN
Pode ocorrer perde de dados (Ex: Vendas x Orçamentos - Existem clientes que foram orçados e não venderam, como tratar esse caso?)
Pode se tornar um problema se as tabelas não tem um relacionamento um-para-um (1:1)
CHAVES CONCATENADAS
Mesmo problema do ANSI JOIN
CONCATENATE (TABELAS)
Em alguns casos você pode perder associações importantes em sua modelagem
LINK TABLE
Mais trabalhoso de ser implementado
Maior tempo de execução de script
Peso um pouco maior na performance de utilização (em relação aos outros casos)
Opinião: Eu procuro utilizar, na maioria das vezes, LinkTable. Me adaptei bastante e consigo resolver 99% das modelagens. (PS: mas LinkTable não faz milagre)
Boa tarde
Concordo com o explanado pelo Yuri. Passei a utilizar LinkTable e consigo resolver quase todos os problemas que enfrento com tabela sintética.
Para enriquecer a discussão, segue um texto do Henric Cronström falando sobre o assunto: Synthetic Keys
Eu uso Link Tables em modelos de dados com múltiplas tabelas fatos.
Quando tenho somente uma fato com suas dimensões, e existem chaves compostas entre elas, e crio a chave única através de concatenação das colunas que fazem parte da chave.
Abraço,
Não esqueça de indicar as resposta uteis ou corretas para encerrar o post.