[firebase-br] triggers

Eduardo Bahiense eduardo em icontroller.com.br
Dom Set 7 13:27:45 -03 2008


Não exatamente

Bancos de dados são ditos relacionais, justamente por sua grande 
capacidade de fazer esse tipo de relacionamento.
Se você medir o tempo de resposta de uma consulta em uma tabela e outra 
consulta envolvendo 5 a 6 tabelas, verá que, estatísitcamente, não há 
muit adiferença. O que importa aí é a qualidade dos relacionamentos, 
sempre ancorados em índices de alta selectividade, a quantidade de 
campos selecionandos, para evitar excesso de tráfego na rede e a 
qualidade da cláusula WHERE, filtrando só o necessário e em conformância 
com os índices disponíveis.

Algumas vezes, por motivos críticos de performance, nos permitimos 
relaxar os critérios de normalização, em uma ou outra área do Sistema. 
Dizem que a busca da normalização perfeita é como a busca do Santo Gral 
- nunca alcançaremos - mas, via de regra, um atributo de um conjunto de 
informações deve estar registrado somente em um lugar. Se você insistir 
nesse princípio, verá que conforme seu sistema cresce, o crescimento do 
volume de tabelas não estrangulará a capacidade de manutenção.

Pense nos atributos primários. Isso, normalmente, dita as regras de PK. 
Saber se a imformação é propriedade de uma ou outra entidade é 
fundamental para se estruturar sistemas de informação, e modelagem do 
banco é "tudo" em um sistema, o resto é interface.

Abs

Eduardo

Augusto junior escreveu:
> Oi Eduardo,
> 
> Mas ai qdo vou fazer algo tipo um relatorio de produtos vendidos, nao seria
> mais rapido se a informaçao
> ja estiver na tabela de itens vendidos do que ter que utilizar duas tabelas
> relacionadas ?
> 
> 
> 2008/9/7 Eduardo Bahiense <eduardo em icontroller.com.br>
> 
>> Olá Augusto
>>
>> Primeiro vc tem que determinar se o cancelamento é atributo do pedido ou
>> do item.
>> Se você pode cancelar um pedido parcialmente, então é do item, mas se
>> você, quando cancela, cancela o pedido como um todo, é do pedido.
>>
>> Se for do item, ok, faça uma trigger, caso contrário, coloque a
>> informação só no pedido, pois o relacioanamento entre tabelas vai te
>> dizer que esse item pertence a um pedido cancelado.
>>
>> Isso chama-se normalização de dados. Me parece que você está modelando
>> com redundânica de informações, o que não é bom, na maioria dos casos.
>>
>> Eduardo
>>
>> Augusto junior escreveu:
>>> Pessoal,
>>>
>>> Tenho uma tabela de pedidos e outra itens vendidos... ambas associadas
>> pelo
>>> campo PEDIDO... e um campo CANCELADO que permite 'S' ou 'N'.. pois
>>> nenhum pedido e excluido do sistema e sim cancelado...
>>>
>>> entao qdo se cancela um pedido tenho que repassar 'S' em todos os
>> registros
>>> da tabela itens vendidos... faço isso um a um ...
>>>
>>> tem como se fazer uma TRIGGER que faça automaticamente?
>>>
>>> Augusto
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista