¿Una clave externa que hace referencia a una clave primaria necesita la restricción NOT NULL en una base de datos PostgreSQL?
La base de datos está muy normalizada y será muy grande. No deseo agregar restricciones adicionales que ralentizarán las consultas aún más si dichas consultas no son necesarias.¿Una PK de referencia de clave externa necesita la restricción NOT NULL?
Respuesta
Si desea poder representar desconocido en la columna FK de esa tabla, puede convertirlo en nulo, si tiene que tener un valor, que sea No nulo.
Puede tener tantos registros como desee en la tabla de referencia con valores FK nulos. La restricción única está en las filas de la tabla referenciada (donde está la PK) y no en las filas de la tabla de referencia (donde está el FK).
Esto es correcto. Para decirlo de otra manera, depende de si estás modelando una relación 1: N o una relación 0..1: N. es decir, ¿es la relación opcional? –
relación 1: 1. La tabla en la que estoy trabajando es una tabla de bridge. – WolfmanDragon
Si es 1: N Entonces la columna FK DEBERÍA tener la restricción No nulo. –
Una clave principal debe ser única e idealmente debe ser seleccionada por la base de datos para limitar los problemas de simultaneidad, por lo que, aunque puede ser única, para 1 registro, cualquier otro registro debe tener un valor.
De lo contrario, ¿cómo sabrá a qué fila se refiere esta clave externa si hay más de una coincidencia?
Por lo tanto, como Nuevo en la ciudad mencionada, NULL debe ser válido, pero para un solo registro, ya que la singularidad será el problema más grande.
EDITAR: oops, malentendió la pregunta.
He puesto nulo antes en las claves foráneas, pero si tiene la opción de eliminar en cascada, por ejemplo, null no funcionará, a menos que tenga la clave en la tabla principal con un valor nulo.
OP preguntaba sobre la restricción "no nula" en la tecla _FOREIGN_ – ChssPly76
- 1. Restricción de clave externa MySQL - Columna entera
- 2. diferencias entre "clave externa" y "restricción de clave externa"
- 3. falso de restricción de clave externa fall
- 4. MySQL 5.5 restricción de clave externa falla cuando existe una clave externa
- 5. Clave primaria compuesta, clave externa. ¿Referencia a objeto o clave?
- 6. Restricción de comprobación de clave externa de T-SQL
- 7. clave externa de MySQL para permitir NULL?
- 8. ¿Cómo elimino una restricción de clave externa en SQLAlchemy?
- 9. ¿Deshabilitar restricción de clave externa en una tabla?
- 10. ¿Cómo eliminar un registro con una restricción de clave externa?
- 11. Por qué crear una restricción de clave externa que hace referencia a la clave primaria de la misma tabla desde el campo de clave principal
- 12. tabla MySQL añadir restricción de clave externa conduce a errores
- 13. SQL Server 2005: Restricción de clave externa anulable
- 14. doctrine2 La relación OneToMany inserta NULL como la clave externa
- 15. Clave externa para la clave compuesta
- 16. Creación de una restricción de clave foránea compuesta
- 17. clave externa Hibernate como parte de la clave primaria
- 18. NHibernate con fluidez Inserciones de asignación HasMany NULL Clave externa
- 19. clave externa en la tabla myisam alternativa?
- 20. gota MySQL Fuerza pasar por restricción de clave externa
- 21. Diferencia entre restricción de clave externa y referencias en Rails
- 22. Compatibilidad con restricción de clave externa en Rails
- 23. Referencia de clave externa a la tabla en otro esquema
- 24. No se puede agregar o actualizar una fila secundaria: falla una restricción de clave externa
- 25. ¿Desea soltar la clave externa sin conocer el nombre de la restricción?
- 26. Actualizando una restricción de clave externa con ON DELETE CASCADE no actualizando?
- 27. ¿Cómo puedo crear una clave externa que hace referencia a una clave compuesta entero?
- 28. SQLAlchemy: no aplicar la restricción de clave externa en una relación
- 29. Referenciar restricciones de clave externa y eliminar
- 30. No se aplica la clave externa
¿Es la velocidad de su aplicación realmente más importante que la corrección? No se dará cuenta de los costos de un cheque no nulo. La respuesta a su pregunta es no, pero especificaría cualquier restricción conocida. –