Usuário com melhor resposta
Duvida redundância dados

Pergunta
-
Boa tarde!!
Estou desenvolvendo um modulo que ira calcular comissoes de vendas. Para gerar esses dados o sistema tera que consultar varios modulos:
Credito
- Vendas
- Assistencia Tecnica
- Recebimento Conta
Débito
- Devolucao
Todos esses modulos tem um campo ID_Modulo para determinar o modulo que gerou a informacao. Exemplo uma entrada no contas a receber deve ter o modulo que gerou esse conta e o ID do documento.
Para gerar a comissao eu preciso de algumas informacoes como Data, Cliente por exemplo.
Perguntas:
1) Deve na tabela que vai gerar as comissoes adicionar esses campos que ficariam redundantes?
2) Criaria uma view com o campo ID_Modulo e ID do documento e outras informacoes comuns com UNION totalizando todos os documentos do sistema, e faria INNER JOIN na tabela de comissao e entao puxaria os dados que preciso dos modulos sem gravar fisiciamente na tabela. Na teoria essa solucao é legal, mas pode haver problema de performance no futuro?
Obrigado!!
Respostas
-
Davi,
Evitar redundancia de dados faz parte da NF3, e é teoricamente uma boa pratica, porem estamos falando de um ambiente OLTP.
O evitar ou não a redundancia de dados depende, se essa sua analise for em um ambiente OLTP, eu não colocaria o dados, criaria os indices corretos e chamaria uma procedure para calcular por exemplo, caso fosse necessario guardar um historico disso, eu criaria uma tabela de historico com referencia para os modulos (Linhas) em si.
Porem, se estivermos falando de um ambiente OLAP, a melhor sugestão, de forma geral claro, talvez seja realmente duplicar os dados, com isso voce ganhara performance, que é um dos pilares principais de um servidor de analise de dados.
Quanto a view, sim, view´s podem se tornar um problema, voce até consegue criar um indice cluster em uma view, porem depende de muitas coisas e infelizmente não é garantido que havera efetivamente uma melhora alta.
Eu criaria uma procedure trabalhando com ou variaveis de tabela (Se forem poucos dados) ou tabelas temporarias, que alem de serem bem faceis de mexer, poder criar indices normalmente, ficam na TEMPDB, aonde em muitos casos estão em algum disco mais rapido, ou mais rpeparado em relação a algum RAID.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta DaviSaba sexta-feira, 10 de fevereiro de 2012 17:38
Todas as Respostas
-
Davi,
Evitar redundancia de dados faz parte da NF3, e é teoricamente uma boa pratica, porem estamos falando de um ambiente OLTP.
O evitar ou não a redundancia de dados depende, se essa sua analise for em um ambiente OLTP, eu não colocaria o dados, criaria os indices corretos e chamaria uma procedure para calcular por exemplo, caso fosse necessario guardar um historico disso, eu criaria uma tabela de historico com referencia para os modulos (Linhas) em si.
Porem, se estivermos falando de um ambiente OLAP, a melhor sugestão, de forma geral claro, talvez seja realmente duplicar os dados, com isso voce ganhara performance, que é um dos pilares principais de um servidor de analise de dados.
Quanto a view, sim, view´s podem se tornar um problema, voce até consegue criar um indice cluster em uma view, porem depende de muitas coisas e infelizmente não é garantido que havera efetivamente uma melhora alta.
Eu criaria uma procedure trabalhando com ou variaveis de tabela (Se forem poucos dados) ou tabelas temporarias, que alem de serem bem faceis de mexer, poder criar indices normalmente, ficam na TEMPDB, aonde em muitos casos estão em algum disco mais rapido, ou mais rpeparado em relação a algum RAID.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta DaviSaba sexta-feira, 10 de fevereiro de 2012 17:38
-