Duvida sobre DELETE em mais de 1 tabela

Boa tarde a todos,

Minha duvida é mais para saber se o modo como estou fazendo está correto ou tem alguma forma mais eficiente de ser realizado. Eu tenho 2 tabelas no meu sistema (Cliente e Endereço) e ao remover um cliente eu primeiro dou um DELETE no endereço e em seguida dou um DELETE no Cliente. Queria saber se essa é realmente a forma mais apropriada ? Eu vi umas pessoas falando do modo CASCATE, mais também vi muitas recomendações de não usa-lo pois não é uma boa deixar o sistema eliminar as entradas filhas, seria melhor isso ser feito manualmente.

Então é isso, gostaria de saber qual a melhor forma ou se a forma que eu estou atualmente utilizando também é uma boa pratica.

Obrigado a todos.

Como tudo na vida, a resposta é, depende.
O relacionamento entre cliente e endereço é um para um?
Se for, não há problemas em utilizar o cascade, afinal, você só afetaria aquele cliente e aquele endereço.
Caso contrário, tome cuidado.

De qualquer forma, ter o controle da situação e saber o que está sendo feito, ainda é a melhor opção

Entendo, mas a forma como eu estou realizando no caso (Dando um DELETE de cada vez) também seria considerada como uma boa opção ?

[quote=strikezado]Boa tarde a todos,

Minha duvida é mais para saber se o modo como estou fazendo está correto ou tem alguma forma mais eficiente de ser realizado. Eu tenho 2 tabelas no meu sistema (Cliente e Endereço) e ao remover um cliente eu primeiro dou um DELETE no endereço e em seguida dou um DELETE no Cliente. Queria saber se essa é realmente a forma mais apropriada ? Eu vi umas pessoas falando do modo CASCATE, mais também vi muitas recomendações de não usa-lo pois não é uma boa deixar o sistema eliminar as entradas filhas, seria melhor isso ser feito manualmente.

Então é isso, gostaria de saber qual a melhor forma ou se a forma que eu estou atualmente utilizando também é uma boa pratica.

Obrigado a todos.[/quote]

Existem algumas formas de fazer isso, na minha opinião a mais correta seria fazer o relacionamento das tabelas e usar o CASCADE no OnDelete e OnUpdate.

Dica:
Só acho que o endereço poderia estar diretamente na entidade Cliente, não vejo necessidade de criar uma entidade separada, pois será muito raro duas pessoas posuirem o mesmo endereço.

Você tem controle do que está sendo realizado, correto?
Sabe que serão deletados, apenas, o endereço e o cliente identificados.

Talvez a performance seja 0,10% menor, mas isso é o menor dos problemas.

Obrigado pela dica,

E espiaoweb2011, eu utilizo uma tabela a parte pois no meu sistema não existe só uma tabela que possui Endereço.
Temos também fornecedor, funcionario e etc. Levando isto em consideração seria uma redundancia muito grande sempre repetir os mesmos campos em todas essas tabelas.

Obrigado a todos

[quote=strikezado]Obrigado pela dica,

E espiaoweb2011, eu utilizo uma tabela a parte pois no meu sistema não existe só uma tabela que possui Endereço.
Temos também fornecedor, funcionario e etc. Levando isto em consideração seria uma redundancia muito grande sempre repetir os mesmos campos em todas essas tabelas.

Obrigado a todos[/quote]

Então neste caso eu tome um pouco de cuidado no uso de CASCADE para não afetar outros registros do seu banco de dados.

Se o tipo de relacionamento for 1 - 1, ta tranqüilo, vá sem medo.
Agora se for 1 - N, não recomendo.

o cascade cai perfeitamente nesse caso. pode por sem medo de ser feliz. xD