Boa noite meu povo,
Gostaria de saber se evitar o uso de chave estrangeira é uma boa pratica e ajuda a melhorar o desempenho do sistema.
Obrigado,
Boa noite meu povo,
Gostaria de saber se evitar o uso de chave estrangeira é uma boa pratica e ajuda a melhorar o desempenho do sistema.
Obrigado,
Chave estrangeira é uma necessidade acho quase impossivel de não utilizar ela.
A maioria dos SGBD quando vc executa uma query mostra o tempo que ela demorou para retornar o resultado, faz um teste.
Voce pode colocar todos os dados em uma tabela só mas isso tem que ser bem analizado.
Qual o banco que vc usa?
Estou analisando o SGBD. Eu ia usar o MySQL, mas vi que se tiver que instalar o software nas maquinas do cliente, entao ele é pago.
Pretendo utilizar o postgresql 9.2
é que eu vi um projeto grande que tem como banco o postgresql e a maioria das tabelas nao tem chave estrangeira. muitas tabelas do projeto possuem mais de 200 colunas.
[quote=PePeLeGaL]
é que eu vi um projeto grande que tem como banco o postgresql e a maioria das tabelas nao tem chave estrangeira. muitas tabelas do projeto possuem mais de 200 colunas.[/quote]
O fato de ser um projeto grande não quer dizer que as práticas adotadas por eles sejam as melhores. E pode ser que haja um motivo para a não presença de chaves estrangeiras.
O MySQL tem versões pagas e gratuitas (community edition), veja aqui: http://www.mysql.com/products/community/.
Imagino que a ausência de chaves estrangeiras não gere ganho de desempenho significativo. Em contrapartida, você perde a vantagem principal das chaves estrangeiras, que é a garantia da integridade dos relacionamentos entre as tabelas. Eu não vejo motivo para abrir mão disso em nome de uma suposta melhoria de desempenho, ainda mais quando a alteração de outras partes do banco pode garantir melhorias mais notáveis (como a adição de índices e a escolha de tipos apropriados para os campos).
Abraço.