Olá, Há realmente pouquíssimos artigos na internet sobre esse tema (e que sejam de qualidade não duvidosa). Se ainda estás na modelagem, realmente concordo com o programador, é uma forma mais correta de trazer os dados. Caso contrário, terás reduzido um excelente banco de dados a um "simples coletor de dados". Se tua modelagem não facilita a busca de todos os dados necessários para as consultas essenciais, então tens de rever a mesma. Não deixe a união de dados ocorrer no aplicativo, nem que para teres um tempo bom de busca precises quebrar algumas das regras de normalidade (mas sempre mantendo o controle sobre a qualidade das informações existentes, como alguma possível replicação de dados com alguma coisa que force integridade - como triggers).
O banco de dados é o local onde fazemos as junções de dados para trazer resultados - não o aplicativo. De qualquer forma, sobre modelagem, acho que poucos sites terão dados relevantes sobre isso, os melhores artigos sobre como realizar uma modelagem estão em livros e revistas técnicas, não me recordo de nenhum em específico no momento. Espero ter ajudado, Abraços e boa sorte na tua modelagem (essa é a parte mais desafiadora e mais prazeirosa), 2009/5/25 Wagner Bonfiglio <wmbonfig...@gmail.com> > Olá André, > > obrigado pela resposta.. O que parece acontecer é algo do tipo: > > O usuário faz uma consulta de carros e pede para separar por marca.. A > maneira de mostrar eh assim: > > Fiat > + (vc pode abrir e ver os carros da Fiat) > - Palio > + (pode abrir e ver os Palio's disponíveis) > - 2005 preto > - 2006 amarelo > - 2007 cinza > - Uno > + > - 2003 Azul > - 2009 Preto > > Ford > ... > ... > ... > > > Então, o resultado viria completo, mais ou menos assim: > > Fiat | Palio | 2005 | Preto > Fiat | Palio | 2006 | Amarelo > Fiat | Palio | 2007 | Cinza > Fiat | Uno | 2003 | Azul > Fiat | Uno | 2009 | Preto > Ford ... > ... > ... > > E no código ele vai tratando no Array... > > Só que, para montar esse resultado formatado assim, ele usou mais de uma > tabela, com joins, group by, etc etc etc > > > > A alternativa seria fazer uma consulta para saber as marcas (retornaria > Fiat e Ford), depois eu faria outra para retornar os carros daquela marca > (pra Fiat retornaria Palio e Uno), e por último eu buscaria quais {Palio's, > Uno's} tem no banco, retornando só (2005, Preto), (2006, Amarelo), (2007, > Cinza), etc.. > > > > > Esse foi um exemplo relativamente simples, mas quando temos muitas tabelas, > muitas ligações, muitas restrições, eu acho que fazer essas consultas > pequenas e mais específicas podem ser mais rápidas no final do que fazer uma > consulta só que retorne tudo oragnizado e geral, organizando tudo no > código... > > > Eu imagino que cada um tenha o seu ponto do vista mesmo, e também imagino > que cada caso é um caso, mas essa questão surgiu durante a modelagem de um > novo sistema, e causou uma discordância pois ele queria uma modelagem que > permitisse ele a fazer uma consulta grande, enquanto eu preferi por uma > modelagem que organizasse melhor os dados mas ficaria muito difícil para ele > fazer essa mega-consulta.... > > Seria interessante se tivesse algum artigo sobre isso, com estudo de caso e > tal... Mas não achei nada numa busca rápida :/ > > > > 2009/5/25 Andre Fernandes <fernandes.an...@gmail.com> > > Bom dia, >> >> esse é um assunto realmente complicado, muitas pessoas costumam discutir >> sobre isso. >> Se a conexão for permanente (ou seja, entre cada consulta não temos de >> abrir novas conexões), então realmente pequenas consultas são a melhor >> opção. >> Contudo, como é oneroso manter conexões abertas por muito tempo com o >> banco de dados, normalmente temos um impasse que precisa ser analisado caso >> a caso, visto que a abertura e fechamento de conexões é algo caro, contudo >> consultas muito pesadas também o são. >> Precisas verificar no caso em específico qual é menos caro para a >> performance do sistema, contudo eu sou adepto de evitar muitas conexões ao >> banco, principalmente se houver muitos usuário simultâneos previstos. >> O pensamento de teu programador teve uma falha apenas, a meu ver (isto é >> uma opnião pessoal, há quem pense diferente): os dados precisam sair do >> banco de dados já tratados (salvo formatação), para isso temos um banco com >> tantos recursos como o PostgreSQL. Mas volto a falar, isso é minha opnião, >> temos outras correntes e pessoas que discordam disso. >> >> Espero ter ajudado um pouco, >> Atenciosamente, >> >> 2009/5/25 Wagner Bonfiglio <wmbonfig...@gmail.com> >> >>> Olá senhores... >>> >>> Esses dias eu estava conversando com um dos programadores aqui da minha >>> empresa e percebi um hábito que ele tem e que eu não concordei muito, mas >>> fiquei com uma dúvida no ar... >>> (OBS: trata-se de programação WEB) >>> >>> Ele disse que prefere fazer uma consulta mais pesada mas que retorne o >>> máximo de dados possíveis de uma só vez, para que o tratamento seja feito >>> dentro do código e assim evitar o excesso de conexões ao banco... >>> >>> Eu quando era programador preferia fazer várias consultas leves, pensando >>> mais no sentido de evitar que uma consulta exigisse muito do banco de >>> dados... >>> >>> Vocês tem alguma opinião formada sobre isso? Ou melhor, existe alguma >>> verdade absoluta sobre melhor prática nesse sentido? >>> >>> Valeu, >>> Wagner Bonfiglio >>> >>> _______________________________________________ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> >> >> -- >> André de Camargo Fernandes >> Cel: (11) 7421-1379 >> >> yellow belt <http://www.javablackbelt.com/UserView.wwa?userId=10305874> on >> JavaBlackBelt >> >> >> >> _______________________________________________ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- André de Camargo Fernandes Cel: (11) 7421-1379 yellow belt <http://www.javablackbelt.com/UserView.wwa?userId=10305874> on JavaBlackBelt
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral