¿Cuándo no es apropiada la integridad referencial?
Intergrity referencial si normalmente no se usa en Data Warehouses donde los datos son una copia de solo lectura de una base de datos transaccional. Otro ejemplo de cuando no necesitaría RI es cuando desea registrar información que incluye identificadores de fila; mantener la integridad referencial para una tabla de registro de solo lectura es un desperdicio de la sobrecarga de la base de datos.
¿Es apropiado tener campos que contengan subconjuntos múltiples y/o posiblemente incompletos de una lista de claves foráneas?
A veces le importa más la captura de datos que la calidad de los datos. Imagine que está agregando una gran cantidad de datos de sistemas dispares que, por derecho propio, sufren problemas de calidad de datos. A veces busca el bien de la calidad de los datos y tener todo en un solo lugar, incluso con las llaves rotas, etc. representa un punto de partida para avanzar hacia la verdadera calidad de los datos. No es ideal, pero sucede ya que los beneficios podrían superar las compensaciones.
Normalmente, ¿debería ser una decisión de diseño de estructura de esquema o una decisión de diseño de interfaz? (O posiblemente ninguno o ambos)
Todo sobre el desarrollo de sistemas se centra en la seguridad de la información, y un elemento clave de eso es la integridad de los datos. La estructura de la base de datos debe inclinarse hacia la aplicación de estas cosas cuando sea posible, sin embargo, a menudo no se trata de sistemas modernos de bases de datos. A veces, su fuente de datos es un AS400 de la vieja escuela con aplicaciones antiguas y anticuadas. En ocasiones, debe crear una capa de datos y negocios que brinde integridad a los datos.
Sólo mis pensamientos.
Como cuestión de interés: ¿tener la integridad referencial activa tiene un impacto en el rendimiento? Por ejemplo: ¿Las inserciones y actualizaciones serán más rápidas con RI apagado en lugar de encenderlo? –
@Dieter: Buen punto. Los costos deben ser claros en dicho "análisis de costo/beneficio". –