Supongo que está hablando de restricciones de clave externa impuestas por la base de datos . Probablemente ya esté utilizando claves externas, pero no se lo ha dicho a la base de datos.
Supongamos que un programador ya está haciendo esto de la manera correcta, entonces ¿realmente necesitamos el concepto de claves externas?
Teóricamente no. Sin embargo, nunca ha habido un software sin errores.
Los errores en el código de la aplicación generalmente no son tan peligrosos: usted identifica el error y lo corrige, y luego la aplicación se ejecuta sin problemas nuevamente. Pero si un error permite que los datos corruptos ingresen a la base de datos, ¡se quedará atascado! Es muy difícil recuperarse de datos corruptos en la base de datos.
Considere si un error sutil en FogBugz permitió que se escribiera una clave externa corrupta en la base de datos. Puede ser fácil corregir el error y enviar rápidamente la solución a los clientes en una versión de corrección de errores. Sin embargo, ¿cómo se deberían corregir los datos corruptos en decenas de bases de datos? El código correcto ahora podría romperse repentinamente porque las suposiciones sobre la integridad de las claves externas ya no se mantienen.
En las aplicaciones web, normalmente solo tiene un programa hablando con la base de datos, por lo que solo hay un lugar donde los errores pueden dañar los datos. En una aplicación empresarial, puede haber varias aplicaciones independientes hablando con la misma base de datos (sin mencionar a las personas que trabajan directamente con el shell de la base de datos). No hay forma de estar seguro de que todas las aplicaciones sigan los mismos supuestos sin errores, siempre y para siempre.
Si las restricciones están codificadas en la base de datos, lo peor que puede suceder con los errores es que se muestre al usuario un mensaje de error desagradable sobre alguna restricción SQL no satisfecha. Esto es mucho mejor que permitir que los datos corruptos entren en la base de datos de su empresa, donde a su vez romperá todas sus aplicaciones o simplemente dará lugar a todo tipo de resultados incorrectos o engañosos.
Ah, y las restricciones de clave externa también mejoran el rendimiento porque están indexadas de forma predeterminada. No puedo pensar en ninguna razón para no usar restricciones de clave externa.