Em Ter, 2015-04-28 às 11:50 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: > 2015-04-28 11:34 GMT-03:00 Irineu <[email protected]>: > > > > Estou modelando o banco de dados(Postgres off course) de uma aplicação em > > java web para loja. > > /Of [ov] course/. /Off [of] course/ significa fora da corrida, ou algo assim. > > > > Fiz uns testes criando types para os objetos como segue exemplo abaixo. > > Ιsso te traz alguma vantagem para a aplicação? > > > > CREATE TYPE cliente AS > > (nome character varying(250), > > cnpj_cpf character varying(20), > > email character varying(250); > > > > CREATE TABLE tb_cliente > > (id SERIAL PRIMARY KEY NOT NULL, > > cliente CLIENTE); > > Faltou chave. Lembre-se que a chave artificial (id) não substitui a > natural, embora possa, em algumas situações, complementá-la, uma vez > que não garante a unicidade. > > No teu modelo, eu diria que chaves candidatas seriam (nome, cnpj_cpf), > (nome, email), ou mesmo (nome, cnpj_cpf, email). > > > > A estimativa de crescimento do banco é atingir no máximo 20GB. > > Normal. > > > > Dentro desse cenário posso ter problemas de desempenho > > Dificilmente. > > > > ou seria melhor modelar da forma tradicional ? > > A menos que você tenha ganhos na aplicação, ou reusará ‘cliente’ > noutras relações (tabelas), seria melhor modelar sem o TYPE porque ele > acaba complicando o modelo, tornando-o mais opaco principalmente para > quem não participou da modelagem. Mesmo você, se a aplicação alcançar > alguma estabilidade a ponto de não precisares te preocupar dela por > uns meses, verá depois de um ano ou algo assim que não ficou tão > transparente quanto poderia. > > Lembre-se que se continua falando do PostgreSQL como > ‘objeto-relacional’ mais por uma questão de publicidade; o que no > PostgreSQL (ou em qualquer SGBD) realmente facilita orientação a > objeto é a riqueza de tipos e a conformidade ao modelo relacional, não > exatamente TYPEs ou herança.
Aproveitando que foi abordado a questão das chaves naturais e com base nas sugestões de chaves, queria poder entender essa opinião que muitos tem. Já vi muita gente criticando as chaves artificiais e aconselhando o uso de chaves naturais simples ou mesmo compostas. Uma chave natural composta de (email, cnpj, nome). Isso não causaria redundâncias de dados, aumentaria o consumo de espaço em disco e prejudicaria o desempenho? Visto que é mais leve e performático gravar, duplicar e fazer transações com um INTEGER do que em um conjunto de três VARCHAR? E se o servidor for modesto? Se o espaço de armazenamento for um requisito crítico? _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
