• As always... It depends

    If you have an OLTP like a sales web site, RI is critical to avoid loosing customers information.

    On the analytical side, is is common to drop RI or load orphan records to a dummy key as it is more important to know that product was sold than who it was sold to.

    99.999% of the apps fall somewhere in the middle.

    As far as testing, I never let the argument of difficulty interfere with the need to do things correctly. Far too often, developers use good test data and never test anomalies. Yes, it takes more time, but if you are not going to test properly, then why test at all?