Por favor, sempre mantenha as discussões na lista!  É contraproducente 
manter em particular, e diminui a comunidade.


Le 07/06/12 20:08, Carlos Antônio Pereira a écrit :
> Então, um assunto muito parecido surgiu em um ambiente que participo.

Ambiente, como assim?


> Lá eles defendem o padrão NLP e dizem que as chaves compostas têm quer
> ser manidas.

Mantidas?  O que seria NLP?  E qual a alternativa a ‘manter’ as chaves 
compostas?

        Chaves sempre têm de ser declaradas, primárias ou não, simples ou 
compostas… a questão é que há quem defenda criar chaves artificiais para 
serem declaradas como primárias, mas mesmo assim essas devem 
complementar as naturais, nunca prescindindo da declaração de todas as 
chaves naturais, quer sejam simples ou compostas, sejam primárias ou 
alternativas (UNIQUE).


> Eu apresentei o exemplo abaixo (cardinalidade N:N), justificando o uso
> de chave composta:
>
> fornecedor(cod_forncedor, nome...) //PK = cod_forncedor
> categoria(cod_categoria, descricao...) //PK = cod_categoria
>
> forncedor_categoria (cod_categoria, cod_forncedor) //PK = cod_categoria
> + cod_forncedor //FK1=cod_tegoria //FK2=cod_forncedor

Sim, é o óbvio e é um exemplo praticamente de livro-texto.

        A única coisa a se discutir aí é se os códigos são naturais ou 
artificiais.


> A meu ver, isso resolveria o problema.

Que problema?  Tu ainda não colocaste o problema para o qual propuseste 
solução…


> A solução NLP:
> forncedor_categoria (id, cod_categoria, cod_forncedor) //PK = id //UK =
> cod_categoria + cod_forncedor //FK1=cod_tegoria //FK2=cod_forncedor

Argh!  Para quê um id aí?  Não há nada a se identificar no caso que nõa 
seja identificado pela combinação dos códigos… é uma entidade fraca, um 
n:m, não uma entidade forte.


> Na minha solução resolve-se com chave primária composta.

Obviamente!


> No NLP seria uma Unique Key

Que muita gente ‘esquece’ de declarar…


> e ainda ganharia de brinde esse id e uma
> sequence.

Gordura inútil.


> Na minha opnião esse id não tem contexto nenhum (melhor para identificar
> o registro unicamente)

Melhor em quê?  Pelo contrário, pior, porque se não se declara a chave 
natural, convidam-se duplicados, além da gordura.


> mas ninguem vai usar esse campo para consulta,
> etc. Logo, não contribuiria significativamente.

Pelo contrário, ele impõe vários custos.  Em que contribuiria, ainda que 
insignificantemente?


-- 
skype:leandro.gfc.dutra?chat       Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191               gTalk: xmpp:[email protected]
+55 (61) 9302 2691         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

Responder a