Probablemente estoy siendo de mente estrecha, pero si creo una restricción de clave externa y una fila se actualiza o elimina, pierdo esa conexión si la columna de la tabla secundaria se establece en NULL.
¿Cuál es el propósito de mantener intencionalmente estas filas huérfanas?
foreign-key
null
Derek Downey
fuente
fuente

Respuestas:
Si
set nulles útil o no depende de lo que haya elegidonullsignificar en el contexto particular: con toda la confusión y la opinión en torno a lanullOMI, el enfoque sensato es que el DBACon esas reglas, considere el siguiente caso de uso:
nullrepresentar una tienda independiente (es decir, una que no forma parte de una cadena)En este caso,
on delete set nulltiene sentido. Hay otras formas de modelar estas reglas comerciales, pero esta es la más simple y si se ajusta con precisión a los hechos que le interesan en el mundo real, sugiero que esté perfectamente bienfuente
La mayoría de los casos de uso que se me ocurren en general son de la forma "Bueno, podríamos hacer algo diferente, pero teníamos ganas de hacerlo".
Considere un
ownercampo para un error en un sistema de seguimiento de problemas en una empresa. Si John renuncia, seguramente todos sus problemas no deberían simplemente eliminarse cuando se elimina su cuenta. Incluso entonces, algunas bases de datos lo permitenSET DEFAULTcomo acción (o hacer que un disparador realice la misma tarea), y que unNobodyempleado sea el propietario predeterminado de los problemas podría ser una opción. O podríamos tener undisabledcampo para John en lugar de eliminar su registro.fuente
RESTRICT), ¡si no por otra razón que señalar la culpa a un viejo empleado cuando algo sale mal!