Evite las "claves foráneas" anulables. Tienen múltiples desventajas.
La restricción en una fila de referencia no siempre se aplica cuando la clave externa contiene un valor nulo. Sin embargo, ese comportamiento predeterminado no es coherente entre diferentes DBMS. Algunos DBMS admiten opciones de configuración para cambiar el comportamiento de las claves foráneas anulables y otras no. Por lo tanto, los desarrolladores y usuarios de SQL pueden no tener claro qué significa realmente una restricción de clave externa anulable desde una perspectiva de integridad de datos. Portar la base de datos entre productos DBMS o incluso entre diferentes servidores que usan el mismo producto podría dar resultados inconsistentes.
Las herramientas de diseño de bases de datos, las herramientas de integración y otro software no siempre las admiten correctamente y los resultados que producen pueden ser incorrectos.
Las claves externas se usan con frecuencia en combinaciones y otras lógicas de consulta, lo que agrava los problemas para los usuarios que piensan que la restricción está vigente cuando no lo es o que no conocen la lógica que aplica su DBMS en particular.
Algunas funciones de optimización de consultas que permiten reescrituras de consultas y otras optimizaciones pueden no estar disponibles cuando una clave externa es anulable.
En términos lógicos, una restricción de "clave externa" anulable no tiene mucho sentido lógico. De acuerdo con el estándar SQL, tal restricción no puede ser violada incluso si la tabla a la que se hace referencia está vacía. Eso contradice una de las presuntas justificaciones más comunes para usar un valor nulo: que representa el caso "desconocido". Si no hay valores válidos de X, entonces cualquier X "desconocido" ciertamente no puede ser un valor válido, y aun así SQL lo permitirá.
Las claves externas anulables son completamente innecesarias. Siempre puede descomponer la clave externa en una nueva tabla o usar un patrón de supertipo / subtipo para que no se necesiten valores nulos. En aras de la simplicidad y la precisión, por lo tanto, es mejor dejar los nulos fuera que introducirlos.