Here's what we do. My tables have an is_delete bit on them. When a record's is_delete bit is set on or off, a trigger cascades the is_delete bit to any dependent records in other tables. Sadly, the cascading feature that is available does not support this, so a trigger is needed.
But that is our solution. I record these cascades in an audit trail table so I can follow the chain and report on who did it and which dependent tables were affected.