Introducción
Las bases de datos SQL son sistemas complejos que almacenan una gran cantidad de datos. La precisión y la integridad de los datos son fundamentales para garantizar que se pueda generar información útil a partir de ellos. Para garantizar lo mismo, las restricciones de referencia y la integridad se utilizan en gran medida en las bases de datos SQL. Esta lección discutirá más sobre las restricciones referenciales y la integridad.
Restricciones referenciales
Las restricciones de referencia o simplemente las restricciones son reglas simples que se pueden crear en bases de datos SQL para evitar que se ingresen datos no deseados / incorrectos en la base de datos. Las restricciones normalmente se deciden antes de crear la tabla SQL y se crean junto con la tabla.
Aquí hay un ejemplo. Una tabla SQL almacena las calificaciones obtenidas por los estudiantes en una prueba y se sabe que las calificaciones solo pueden oscilar entre 0 y 100. En tal escenario, se puede crear una restricción en SQL para hacer cumplir que solo los valores entre 0 y 100 pueden ser ingresado en el campo de marcas y cualquier valor fuera de este rango será rechazado.
Todas las implementaciones de SQL admiten las siguientes restricciones:
- NOT NULL : cuando se define para un campo de tabla, esta restricción asegura que el valor ingresado no puede ser NULL. Por ejemplo, se puede crear un campo en una tabla para almacenar la fecha de nacimiento de los estudiantes. El campo de la fecha de nacimiento es obligatorio ya que se usa ampliamente en otros lugares, por ejemplo, para determinar la elegibilidad de los estudiantes para inscribirse en cursos o para solicitar permisos de trabajo temporales. Por lo tanto, es obvio que el campo de fecha de nacimiento no puede dejarse con un valor NULL y el campo debe crearse con una restricción NOT NULL.
- ÚNICO : cuando se define para un campo de tabla, esta restricción asegura que todos los valores ingresados para este campo deben ser únicos. Por ejemplo, se puede crear un campo para almacenar el número de seguro social de los empleados. En la vida real, todos los números de seguro social son únicos y la restricción ÚNICA se utiliza para hacer cumplir esto en la base de datos. Una vez que se use esta restricción, no se aceptarán números de seguro social duplicados y si se intenta ingresar un registro que contenga un número duplicado, se generará una alerta de error de inmediato.
- CHECK : cuando se define para un campo de tabla, la restricción CHECK asegura que el valor ingresado esté dentro del rango de valores permitido. Este ejemplo se mencionó anteriormente en el que los puntajes de los estudiantes en una prueba solo son posibles entre 0 y 100. La restricción CHECK se usa para garantizar que solo se acepten valores válidos dentro de este rango y se rechace todo lo que esté fuera.
- DEFAULT : cuando se define para un campo de tabla, la restricción DEFAULT proporciona un valor predeterminado para el campo cuando no se proporciona un valor específico. Por ejemplo, se sabe que la mayoría de los miembros de una sociedad son hombres y se crea una tabla SQL para almacenar los detalles de los miembros, siendo el sexo uno de los campos contenidos. Como la mayoría de los miembros son hombres, durante la entrada de datos, el campo de sexo para los miembros masculinos se puede dejar en blanco y la restricción DEFAULT lo sustituirá automáticamente por masculino. Para los miembros femeninos, el valor debe ingresarse explícitamente.
- PRIMARY KEY : la restricción PRIMARY KEY se aplica a la tabla y no a los campos como se explica para las cuatro restricciones anteriores. PRIMARY KEY puede estar compuesta por campos únicos o múltiples en la tabla y esta restricción asegura que todos los registros en la tabla estén identificados de forma única. Un ejemplo que utiliza esta restricción es que se debe crear una tabla para almacenar los datos personales de todos los empleados de una organización y, como el campo employeeID identifica de forma única a todos los empleados, el campo se puede utilizar como restricción PRIMARY KEY.
- LLAVE EXTRANJERA : aunque la CLAVE EXTERNA se puede definir como una restricción, sería más apropiado discutirla en la sección sobre integridad referencial, ya que las claves externas se utilizan para reforzar la integridad en las relaciones.
Las restricciones comunes de SQL se han discutido anteriormente. Tenga en cuenta que algunas implementaciones de SQL pueden tener otras restricciones específicas de implementación no mencionadas anteriormente. Por ejemplo, MySQL incluye las restricciones ENUM y SET. Además, tenga en cuenta que puede haber más de una restricción que se podría aplicar a un campo de base de datos determinado o que una tabla puede tener múltiples restricciones definidas en varios campos diferentes. Considere la siguiente tabla que modela una tabla de detalles de orden de compra simple. Esta tabla probablemente tendría dos restricciones definidas: una restricción PRIMARY KEY en la combinación de los campos PONumber y POItem que siempre deben ser únicos y una combinación de restricción CHECK y NOT NULL en el campo QtyOrdered para asegurar que todos los artículos ordenados tengan un no -Valor de cantidad pedida NULO y positivo.
![]() |
Integridad referencial
La discusión sobre las restricciones PRIMARY KEY y FOREIGN KEY es necesaria para definir la integridad referencial. La restricción PRIMARY KEY ya se definió anteriormente. UNA LLAVE EXTRANJERA mantiene la relación entre dos tablas diferentes. El siguiente diagrama ilustra el vínculo entre las claves externas y primarias y cómo se mantiene la relación de integridad referencial.
El diagrama muestra el vínculo entre las tablas proveedor y itemSupplier. La CLAVE PRIMARIA de la tabla de proveedores se ha definido como el campo ID de proveedor. Hay un vínculo que se muestra entre las tablas proveedor y itemSupplier. El campo ID de proveedor también se define como la clave externa en la tabla itemSupplier. Esto establece una relación entre el proveedor y la tabla itemSupplier, es decir, se mantiene la integridad referencial entre estas dos tablas utilizando el campo ID de proveedor. En esta relación, cualquier valor ingresado en el campo ID de proveedor de la tabla itemSupplier debe existir primero como un valor en la tabla de proveedores. Si se intenta ingresar un valor que no existe en el campo ID de proveedor en la tabla de proveedores como valor del campo ID de proveedor en la tabla itemSupplier, la integridad referencial entre estas dos tablas será violada y la inserción será RECHAZADA. Cualquier valor para el ID de proveedor debe ingresarse primero en la tabla de proveedores antes de que pueda ingresarse en la tabla itemSupplier. Esta es también la forma esperada en que las cosas deberían funcionar de forma natural. Los detalles del proveedor deben mantenerse primero en la tabla de proveedores (es decir, ID de proveedor asignado, detalles del proveedor proporcionados e ingresados …) antes de que el proveedor pueda comenzar a suministrar piezas. Un ID de proveedor inexistente introducido en la tabla itemSupplier sin un ID de proveedor correspondiente en la tabla de proveedores no tiene sentido. Aquí simplemente el ID del proveedor tiene un valor y existe en la base de datos, pero no se puede vincular a ningún proveedor.
![]() |
Ahora, ¿qué pasa si un ID de proveedor determinado se elimina de la tabla de proveedores? ¿Se mantendrá la integridad referencial si el ID de proveedor dado existe en la tabla itemSupplier? Obviamente, esta es la misma situación cuando intentamos insertar un valor inexistente para el campo ID de proveedor en la tabla itemSupplier y se violará la integridad referencial. Afortunadamente, los sistemas SQL tienen mecanismos para manejar esta situación con elegancia. Si se intenta eliminar registros en la tabla de proveedores con enlaces a registros en la tabla itemSupplier, hay cuatro opciones posibles que el usuario puede definir para manejar este escenario para hacer cumplir la integridad referencial. Son los siguientes:
- ON DELETE RESTRICT : esta configuración evita que se elimine un registro en la tabla de proveedores si el valor de la clave principal del registro eliminado existe como el valor de una o más claves externas en la tabla itemSupplier
- ON DELETE CASCADE : la eliminación en cascada garantizará la eliminación automática de todos los registros en la tabla itemSupplier con el valor de la clave externa igual al valor de la clave primaria eliminada. Esta configuración debe usarse con cuidado, ya que en la mayoría de los casos, no hay una indicación clara de que los registros de la tabla itemSupplier también se hayan eliminado.
- ON DELETE SET NULL : en esta situación, los valores de todas las claves externas que coincidan con el valor de la clave primaria eliminada se reemplazarán con el valor NULL. Tenga en cuenta que esta opción solo es posible si el campo de clave externa se establece como un campo que puede ser NULO.
- ON DELETE SET DEFAULT : en esta situación, el valor de todas las claves externas que coincidan con el valor de la clave primaria eliminada se reemplazará por un valor predeterminado. Tenga en cuenta que esta opción solo es posible si el valor predeterminado también es uno de los valores válidos para la clave principal en la tabla de proveedores.
Resumen de la lección
Esta lección ha discutido los temas de restricciones referenciales e integridad referencial. Los sistemas SQL ofrecen una serie de funciones para ayudar a hacer cumplir estos requisitos. Las restricciones referenciales normalmente actúan sobre los campos de las tablas mientras que la integridad referencial sobre las relaciones de las tablas.
Continúa con:
- Ciencia de la computación
Ventajas de los sistemas de gestión de bases de datos (DBMS)
¿De qué se trata DBMS? Un sistema de gestión de bases de datos (DBMS) es...
- Contabilidad
Manufactura esbelta y la teoría de las restricciones
Eliminando residuos Imagina que estás haciendo una colcha. Antes de comenzar, debe encontrar un patrón...
- Recursos Humanos
Reglas laborales, participantes y restricciones en las relaciones laborales
¿Qué son las reglas de trabajo? Los empleados de Toxicity Manufacturing sienten que la gerencia...
- Ciencias Económicas
Regulaciones y restricciones de Comercio Internacional en Estados Unidos
Importaciones Muchas empresas estadounidenses importan productos. Una importación es cualquier bien o servicio producido en...


