[firebase-br] RES: Como fazer um UPDATE com uma condição

Eduardo Bahiense eduardo em icontroller.com.br
Dom Out 26 21:38:55 -03 2008


> Agradeço a ajuda ai, só tenho ? uma dúvida :
> Para funcionar essa Procedure precisa que se tenha um índice primário?
> Eu preciso que todos os campos tenham informações repetidas.


Olá Zé

Como você se diz iniciante, vou me permitir umas considerações.

1. Dificilmente uma informação utilizada em qualquer processo não possui 
um conjunto de atributos que garantam a unicidade de um registro (chave 
primária)

2. Lembre que uma chave primária pode ser composta, ou seja, a união de 
dois ou mais campos causam a unicidade. Exemplo: Existem cidades com o 
mesmo nome - Palmas no Paraná e Palmas em Tocantins - mas se colocarmos 
a UF na parada, PR - Palmas é diferente de TO - Palmas, se isso não for 
suficiente, certamente o CEP da cidade acabará de completar a regra.

3. Se você tem uma tabela que não possui um índice primário, como você 
manteria esta tabela com updates e deletes? Tipo se você tem vários 
campos que são identicos entre si, sem um conjunto de atributos que os 
distinguam, se você fizer um DELETE FROM TABELA WHERE <condição>, pode 
afetar mais de um registro. Percebe aqui a importância de uma chave 
primária?

4. Se realmente as informações que essa tabela armazena não possui um 
conjunto que dê unicidade, a coisa fica ainda mais fácil, você cria um 
campo alimentado por um generator/trigger e o usa exclusivamente como 
atributo primário da tabela, de forma que você possa agora trabalhar 
"direito".

5. O trabalhar "direito" acima é porque, até onde eu consigo alcançar, 
uma tabela sem chave primária não poderia fazer parte de nenhum processo 
principal, se prestaria apenas a processos auxiliares, e olhe lá. Não 
acredito realmente que exista algum banco de dados bem modelado que 
prescinda de identificação primária em qualquer tabela. Isso é 
indispensável aos relacionamentos e esses bancos são ditos "relacionais".

Claro que toda regra tem exceção, e lógica, cada um tem a sua que, no 
final, acaba dando certo. Então, tenha isso como uma opinião de quem 
está na estrada há mais tempo, e não como algo absoluto.


Abraço


Eduardo





Mais detalhes sobre a lista de discussão lista