Le 2011-D-8 23h3, Vinicius Santos a écrit :
>
> CREATE TABLE deposito_produtos(
> nome VARCHAR( 50 ) NOT NULL, -- nome do deposito
> cidade VARCHAR( 50 ) NOT NULL, -- cidade onde fica o deposito
> tamanho_deposito NUMERIC NOT NULL, -- Tamanho do deposito em m²
> PRIMARY KEY ( nome, cidade )
> );
Prefira nome_cidade, para que o nome do atributo seja consistente na base.
> CREATE TABLE produtos(
> descricao VARCHAR( 50 ) PRIMARY KEY, -- Nome do produto
> nome_deposito VARCHAR( 50 ), -- Referência da tabela deposito_produtos
> cidade VARCHAR( 50 ) -- Referência da tabela deposito_produtos
> ).
>
> Minha dúvida é a seguinte: Se eu tivesse usado uma chave artificial na
> tabela de "deposito_produtos", eu não precisaria exportar duas colunas
> para a tabela "produtos", apenas a chave artificial. Então eu garantiria
> unicidade com um UNIQUE CONSTRAINT.
Certo.
> Se eu fizer uma consulta de todos os produtos e precisar fazer um JOIN
> com "deposito_produtos" para saber o tamanho do deposito, o JOIN
> envolveria 2 colunas de cada tabela.
> Se fosse uma chave artificial seria apenas uma.
E qual a vantagem disso?
Por outro lado, mais junções seriam feitas, para recuperar o nome da
cidade e do depósito, o que antes não era necessário.
Além de que, a longo prazo, o modelo ficou menos claro.
> Seria justificável o uso de chaves artificiais nestes casos ?
Não necessariamente, eu diria que somente avaliando caso a caso. Até
porque passas a precisar duma junção a mais.
Otimização precoce é a raiz de toda sorte de males.
--
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191 gTalk: xmpp:[email protected]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3 MSN: msnim:[email protected]
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral