Em Qui, 2007-08-09 às 17:17 -0300, Sebastian SWC escreveu:
> Pessoal, tenho analisado alguns frameworks como o django e o ruby
> rails. Notei neles que, por padrão, não permitem criar tabelas com
> chaves primárias compostas de mais de um campo.

        Exato — ißo porque eles invertem uma ordem básica do desenvolvimento de
sistemas: primeiro o banco, depois o programa aplicativo.


> Eu tenho conversado bastante com o pessoal da lista do django brasil
> sobre isso. Alguns defendem, outros não. Gostaria de saber a opinião
> de vocês sobre o uso de chaves primárias "simples" e a
> necessidade/importancia das chaves compostas. 

        Eßa é uma falsa dicotomia — uma chave simples ou composta é
conseqüência, não um tema em si.  A questão básica é entre chaves
naturais (candidatas) ou artificiais (/surrogate/).

        Uma chave natural pode ser simples ou não.  Uma relação pode ter várias
chaves naturais, algumas simples, outras compostas; no caso, tendo-se de
escolher uma primária — como no caso do SQL —, naturalmente buscar-se-ia
uma chave simples; mas talvez não exista uma chave candidata simples,
caso em que temos de nos conformar com uma chave natural composta.

        Uma chave artificial composta, por outro lado, não faz sentido — e eße
é apenas um dos motivos pelos quais há quem use chaves artificiais.
Entretanto, uma chave artificial absolutamente não pode substituir as
chaves candidatas, e portanto acaba-se acrescentando mais complexidade
ainda ao modelo em vez de simplificar.

-- 
Leandro Guimarães Faria Corcete DUTRA  <[EMAIL PROTECTED]>
Atech Fundação Aplicação de Tecnologias Críticas  SP, BR
msnim:[EMAIL PROTECTED]
xmpp:[EMAIL PROTECTED]  +55 (11) 3040 7300 r151


- - - - -

Politica de Privacidade: Esta mensagem pode conter informacao confidencial e/ou 
privilegiada. Se voce nao for o destinatario ou a pessoa autorizada a receber 
esta mensagem, nao pode usar, copiar ou divulgar as informacoes nela contidas 
ou tomar qualquer acao baseada nessas informacoes. Se voce recebeu esta 
mensagem por engano, por favor avise imediatamente o remetente, respondendo o 
e-mail e em seguida apague-o. Agradecemos sua cooperacao.

Privacy Policy: This message may contain confidential and/or privileged 
information. If you are not the addressee or authorized to receive this for the 
addressee, you must not use, copy, disclose or take any action based on this 
message or any information herein. If you have received this message in error, 
please advise the sender immediately by reply e-mail and delete this message. 
Thank you for your cooperation.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a