データベースに適切なRIが定義されている場合は、データの整合性が損なわれることはありません。関連するすべてのテーブルには宣言型RIが必要です。つまり、子がまだある間は親を削除できません。
また、時々一部の行のみを削除するコードがある場合、それは不十分なコーディングと不十分なテストです。これらの種類のアクションは、単一のトランザクションである必要があります。ストアドプロシージャを使用するという提案は、その問題を解決するための優れたアプローチであり、かなり標準的です。
すでに述べたように、カスケードトリガーには、誰かが削除するつもりのない行を削除する危険性があります。特にデータの問題を修正するときに、アプリケーションの外部からデータにアクセスする人がいる可能性があることを考慮してください。誰かが誤って間違った親を削除しようとして、良いRIエラーが発生した場合。彼らが誤って間違った親を削除しようとして、その親だけでなく、他の5つのテーブルの20人の子も削除された場合、それは悪いことです。
また、カスケード削除は非常に隠されています。開発者が親の削除をコーディングしている場合は、子の世話をするために削除ストアドプロシージャを使用する必要があることを知っておく必要があります。開発者にそれに対してコーディングせず、エラーを取得し、コードを修正する(または、開発者が削除をスローして実行するよりも、実際にはすべての削除を実行したくないことに気付く)ことをお勧めします。コードが公開されるまで、それが子供を殺していることに誰も気づきません。
IMO、私は開発者にアプリケーションについての知識を持たせたいと思っています。開発者がアプリケーションを知らないままにしやすくするよりも。