2010/1/4 Andre Fernandes <fernandes.an...@gmail.com>:
> Isso não
> significa que a chave artificial precise estar desprovida de significado.

André, pelo contrário, uma chave artificial _por definição_ é
desprovida de significado.

Por definição, chave natural é dada pela natureza do que se quer
modelar, enquanto a artificial é criada na própria base, sem ter
relação com o mundo real.

Por exemplo, o CNPJ é uma chave artificial para o sistema que a gera;
para todo mundo fora da Receita, é natural.  E deve ser natural para
todos os sistemas da Receita além daquele que o gera.


> Uma chave primária tem de ser a forma de buscar na tabela usada
> primariamente e que identifica o registro.

Não exatamente.  Pode haver várias formas de buscar, muitas podem nem
ser chaves, nem sequer indexadas.  E uma tupla pode ser identificada
por n chaves, sem que uma seja mais correta, melhor ou mais importante
que as outras.

A necessidade duma chave entre outras ser escolhida como primária não
tem mais sentido.  Foi herdada pelo SQL de modelos pré-relacionais.


> Isso significa que criar uma
> chave artificial numa tabela de pedidos pode ter um sentido, é a
> identificação de qual o pedido do cliente e quando o mesmo ligar, será
> solicitada essa chave (número do pedido) para achar o mesmo.

Ou seja, já virou uma chave natural, ao menos para o cliente.

Veja de outra maneira: imagine que o cliente perdeu o número do
pedido.  O que se faz, perde-se o pedido?  Não, há outras informações,
que o cliente talvez nem precise decorar ou anotar, que identificarão
o pedido.  Cada conjunto de informações que sirva para isso será uma
chave.


> Antes que mencionem que podemos ter alguma alteração em chaves primárias
> naturais (mudanças de regras de negócio, por exemplo), essa não seria uma
> boa justificativa para não usá-las visto a teoria Relacional não proibir
> alterações de chaves primárias.

O argumento é prático, não conceitual.  E cai com a possibilidade de
ON UPDATE CASCADE.


-- 
skype:leandro.gfc.dutra?chat      Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191              gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191        ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brésil
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to