[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