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

Responder a