Saltar a un capítulo clave
Tipos de Restricciones de Integridad en SQL
Las Restricciones de Integridad son una parte esencial de las bases de datos SQL, ya que garantizan la exactitud y coherencia de los datos almacenados. Definen reglas para mantener la integridad de los datos y protegen la base de datos de los problemas con los datos.
Hay varios tipos de Restricciones de Integridad en SQL, cada una de las cuales sirve para un fin determinado. Si comprendes estas restricciones, podrás crear bases de datos fiables y eficaces. Profundicemos en estos tipos de restricciones.
Restricciones de Integridad de Dominio en SQL
Las restricciones de integridad de dominio definen los valores permitidos para una columna determinada. Aplicando estas restricciones, puedes restringir los datos introducidos en una columna concreta, garantizando valores de datos coherentes en toda tu base de datos.
Algunas de las restricciones de integridad de dominio más utilizadas son:
- Tipo de datos - La columna debe contener valores de un tipo de datos específico
- Formato de datos - El formato de los valores de una columna debe seguir un patrón definido
- Rango - Los valores deben estar dentro de un rango especificado
- Enumeración - Los valores de la columna sólo pueden tomarse de un conjunto predefinido de valores
Por ejemplo, si tienes una tabla que contiene información sobre los salarios de los empleados, podrías aplicar una restricción de integridad de dominio a la columna "salario" para asegurarte de que sólo se introducen valores numéricos dentro de un rango específico.
Restricciones de integridad de entidad en SQL
Las Restricciones de Integridad de Entidades implican identificar de forma única las filas de una tabla de base de datos, de forma que no haya valores duplicados o nulos en una columna de clave primaria. Una clave primaria es una columna única en una tabla que identifica de forma única cada fila de la tabla. Esta restricción ayuda a mantener la unicidad e integridad de los datos, impidiendo la existencia de filas duplicadas.
Por ejemplo, en una tabla que almacena información sobre clientes, se puede asignar un número de identificación único ("customer_id") como clave primaria para identificar de forma única a cada cliente.
Restricción de integridad referencial en SQL
La restricción de integridad referencial garantiza que las relaciones entre tablas se mantengan de forma coherente. Se aplica utilizando claves externas, que son columnas de una tabla que hacen referencia a una clave primaria de otra tabla. La clave ajena ayuda a mantener la integridad referencial entre dos tablas relacionadas, asegurándose de que los cambios en la clave primaria de una tabla se reflejen en la clave ajena correspondiente de otra tabla.
Hay dos reglas principales que hay que mantener cuando se trata de Restricciones de Integridad Referencial:
- Si se actualiza o elimina un valor de clave primaria, también deben actualizarse o eliminarse los valores de clave externa correspondientes en la tabla relacionada.
- Cualquier nuevo valor de clave ajena que se añada a la tabla relacionada debe tener un valor de clave ajena correspondiente en la otra tabla.
Por ejemplo, imagina una base de datos con dos tablas: "Clientes" y "Pedidos". El campo "customer_id" de la tabla "Clientes" es la clave primaria, mientras que el mismo campo de la tabla "Pedidos" es una clave ajena. Si se elimina un cliente de la tabla "Clientes", la restricción de integridad referencial garantizará que también se eliminen todos los pedidos asociados. Del mismo modo, si se añade un pedido a la tabla "Pedidos", la restricción exigiría que el cliente asociado existiera en la tabla "Clientes".
Implementación de restricciones de integridad complejas en SQL
Las Restricciones de Integridad Complejas en SQL implican implementar restricciones personalizadas y utilizar desencadenadores para escenarios específicos. Estas restricciones permiten que la base de datos gestione requisitos de datos más complejos que los que permiten las restricciones estándar. Implementar restricciones complejas te permite mantener la integridad, coherencia y precisión de los datos en la base de datos de forma eficaz, al tiempo que abordas necesidades empresariales específicas.
Crear restricciones personalizadas
Crear Restricciones Personalizadas implica definir reglas basadas en requisitos específicos que no pueden abordarse utilizando las restricciones estándar predefinidas. Estas restricciones ayudan a mantener la validez y coherencia de los datos según la lógica empresarial específica. Las restricciones personalizadas pueden implementarse utilizando restricciones SQL CHECK.
Aquí tienes algunos aspectos esenciales que debes tener en cuenta al crear restricciones personalizadas:
- Las restricciones personalizadas deben basarse en columnas de la misma tabla.
- La restricción debe consistir en una expresión lógica, no en una consulta SQL.
- La restricción debe verificarse y mantenerse durante todas las operaciones INSERTAR, ACTUALIZAR y ELIMINAR en la tabla.
Para crear una restricción personalizada en SQL, puedes utilizar la palabra clave CHECK seguida de la condición de restricción deseada.
Por ejemplo, si tienes una tabla llamada "Empleados" con una columna "salario" y "fecha_incorporación", puedes crear una restricción personalizada que garantice que los empleados contratados después de una fecha determinada tengan un salario mínimo requerido:
CREAR TABLA Empleados ( empleado_id INT PRIMARY KEY, salario NUMERIC(10,2), join_date DATE, CHECK (join_date > '2000-01-01' AND salario >= 20000) );
Al crear restricciones personalizadas, puedes mantener la integridad de los datos y aplicar reglas empresariales específicas que no se pueden conseguir con las restricciones SQL estándar.
Uso de desencadenadores para restricciones complejas
Los desencadenantes son una potente herramienta de SQL que facilita la aplicación de restricciones de integridad complejas. Los desencadenantes SQL se adjuntan a eventos específicos como INSERTAR, ACTUALIZAR, ELIMINAR o incluso a múltiples eventos en tablas o vistas específicas. Los desencadenantes se invocan automáticamente cuando se producen los eventos definidos, lo que permite verificar las restricciones y aplicar alteraciones automáticamente.
Cuando necesites aplicar restricciones complejas que impliquen varias tablas o cálculos complejos, los activadores se convierten en un método adecuado para mantener la integridad de los datos.
Los desencadenantes pueden clasificarse en dos tipos:
- Disparadores Antes - Estos disparadores se ejecutan antes del evento especificado. Son útiles para mantener restricciones complejas validando y manipulando los datos antes de que se almacenen permanentemente en la base de datos.
- Disparadores Después - Estos disparadores se ejecutan después del evento especificado. Pueden utilizarse para mantener la integridad de los datos realizando acciones adicionales, como actualizar otras tablas o generar entradas de registro para mantener un registro de auditoría.
He aquí un ejemplo de desencadenador que aplica una restricción compleja:
Supón que tienes dos tablas, "Proyectos" y "Tareas", y quieres asegurarte de que no se supera el presupuesto de un proyecto al añadir nuevas tareas. Puedes crear un activador AFTER INSERT en la tabla "Tareas" que compruebe si el coste total estimado de todas las tareas relacionadas con un proyecto supera el presupuesto del proyecto y revierta la transacción si se infringe la restricción:
CREATE TRIGGER check_project_budget AFTER INSERT ON tasks FOR EACH ROW BEGIN DECLARE project_total_cost NUMERIC(10,2); DECLARE project_budget NUMERIC(10,2); SELECT SUM(estimated_cost) INTO project_total_cost FROM tasks WHERE project_id = NEW.project_id; SELECT budget INTO project_budget FROM projects WHERE project_id = NEW.project_id; IF project_total_cost > project_budget THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '¡Se ha superado el presupuesto del proyecto!'; END IF; END;
En resumen, el uso de desencadenadores te permite mantener restricciones complejas que implican múltiples tablas y cálculos, garantizando la integridad de los datos, la coherencia y el cumplimiento de las reglas empresariales. Si sabes cuándo y cómo utilizar restricciones y desencadenadores personalizados, podrás crear una base de datos robusta y optimizada para tus necesidades específicas.
Garantizar la coherencia de los datos con restricciones de integridad en SQL
Las restricciones de integridad desempeñan un papel vital a la hora de garantizar la coherencia de los datos en las bases de datos SQL, ya que aplican reglas para mantener la integridad de los datos, la unicidad y las relaciones referenciales entre tablas. Esta sección profundizará en los aspectos de la alteración y eliminación de restricciones y el mantenimiento de la integridad referencial durante las actualizaciones y eliminaciones.
Modificar y eliminar restricciones
Cuando trabajes con una base de datos en evolución, puede que necesites modificar o eliminar restricciones para adaptarlas a los cambios en la estructura de datos o a los requisitos de la empresa. En SQL, puedes hacerlo fácilmente utilizando la sentencia ALTER TABLE para alterar o eliminar restricciones.
Sin embargo, al modificar o eliminar restricciones, es esencial seguir ciertos métodos y buenas prácticas para evitar comprometer la integridad y coherencia de tus datos. Exploremos cómo realizar estas acciones de forma segura y correcta con los siguientes pasos:
- Identifica la restricción que se va a modificar o eliminar - Normalmente puedes encontrar esta información en el esquema de la tabla o consultando el INFORMATION_SCHEMA.
- Garantiza la integridad de los datos - Antes de alterar o eliminar una restricción, asegúrate de que los datos existentes se ajustan a los nuevos requisitos de la restricción, o resuelve cualquier conflicto potencial si se elimina la restricción.
- Realiza la alteración o eliminación mediante la sentencia ALTER TABLE - Emite los comandos SQL adecuados para aplicar los cambios a las restricciones según sea necesario.
- Verifica los cambios - Confirma que las restricciones se han modificado o eliminado correctamente examinando el esquema actualizado de la tabla o ejecutando consultas de prueba.
Considera el siguiente ejemplo: Tienes una tabla "Empleados" con una restricción en la columna "salario" para garantizar que el valor del salario es mayor o igual que 15.000. Si necesitas actualizar esta restricción para establecer el valor mínimo del salario en 18.000, puedes seguir estos pasos:
- Identifica la restricción
:SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'Empleados';
- Asegúrate de que todos los valores de salario existentes son iguales o superiores a 18.000.
- Realiza la alteración utilizando la sentencia ALTER TABLE
:ALTER TABLE Empleados DROP CONSTRAINT salario_restricción; ALTER TABLE Empleados ADD CONSTRAINT salario_restricción CHECK (salario >= 18000);
- Verifica los cambios comprobando el esquema de la tabla y ejecutando consultas de prueba.
Mantener la integridad referencial durante las actualizaciones y eliminaciones
La integridad referencial, como ya se ha mencionado, es esencial para preservar la coherencia y fiabilidad de las relaciones entre las tablas de tu base de datos. Las actualizaciones y eliminaciones en las columnas de clave primaria o clave externa pueden romper potencialmente la integridad referencial si no se manejan con cuidado. Por lo tanto, es crucial tener en cuenta el impacto de estas operaciones en las tablas relacionadas.
En SQL, puedes utilizar acciones referenciales para mantener la integridad referencial durante las actualizaciones y los borrados. Estas acciones definen cómo se propagan los cambios en una tabla a las tablas relacionadas. Las principales acciones referenciales son
- CASCADE - Esta acción actualiza o borra automáticamente las filas de clave ajena correspondientes en la tabla relacionada cuando se actualiza o borra la clave primaria en la tabla padre.
- SET NULL - Si se actualiza o elimina la clave primaria, esta acción establece en NULL los valores correspondientes de la clave externa en la tabla relacionada.
- ESTABLECER POR DEFECTO - Esta acción establece los valores de las claves externas de la tabla relacionada a sus valores por defecto cuando se actualiza o borra la clave primaria de la tabla padre.
- SIN ACCIÓN - No se realiza ninguna acción en la tabla relacionada cuando se actualiza o elimina la clave primaria en la tabla padre. Sin embargo, la norma SQL exige que se rechace la actualización o eliminación de la clave primaria si infringe la restricción de integridad referencial.
Para mantener la integridad referencial, puedes elegir una de las acciones anteriores que mejor se adapte a tus requisitos específicos de datos. Define estas acciones mediante la definición de la restricción FOREIGN KEY en la sentencia CREATE TABLE o ALTER TABLE.
Por ejemplo, imagina una base de datos con una tabla "Clientes" y una tabla "Pedidos", donde la columna "customer_id" de la tabla "Pedidos" es una clave foránea que hace referencia a la clave primaria "customer_id" de la tabla "Clientes". Puedes utilizar la acción referencial CASCADE para asegurarte de que cualquier actualización o eliminación en la clave primaria "Clientes" se refleje automáticamente en la clave foránea "Pedidos". Esto puede hacerse de la siguiente forma
CREAR TABLA Pedidos ( order_id INT PRIMARY KEY, customer_id INT, product_id INT, quantity INT, FOREIGN KEY (customer_id) REFERENCES Customers(customer_id) ON UPDATE CASCADE ON DELETE CASCADE );
Siguiendo estas directrices, puedes mantener eficazmente la integridad referencial durante las actualizaciones y los borrados, y garantizar la calidad y coherencia de los datos en tu base de datos SQL.
Restricciones de integridad en SQL - Puntos clave
Restricciones de integridad en SQL: Garantizan la coherencia, precisión y fiabilidad de los datos en las bases de datos.
Restricciones de Integridad de Dominio: Restringen los valores permitidos en una columna para mantener la coherencia de los datos.
Restricciones de integridad de entidad: Imponen la unicidad de la columna de clave primaria de una tabla para evitar valores duplicados o nulos.
Restricción de integridad referencial: Mantienen la coherencia en las relaciones entre tablas utilizando claves primarias y foráneas.
Restricciones de Integridad Complejas en SQL: Creación de restricciones personalizadas y uso de desencadenadores para escenarios específicos con el fin de gestionar requisitos de datos complejos.
Aprende más rápido con las 15 tarjetas sobre Restricciones de integridad en SQL
Regístrate gratis para acceder a todas nuestras tarjetas.
Preguntas frecuentes sobre Restricciones de integridad en SQL
Acerca de StudySmarter
StudySmarter es una compañía de tecnología educativa reconocida a nivel mundial, que ofrece una plataforma de aprendizaje integral diseñada para estudiantes de todas las edades y niveles educativos. Nuestra plataforma proporciona apoyo en el aprendizaje para una amplia gama de asignaturas, incluidas las STEM, Ciencias Sociales e Idiomas, y también ayuda a los estudiantes a dominar con éxito diversos exámenes y pruebas en todo el mundo, como GCSE, A Level, SAT, ACT, Abitur y más. Ofrecemos una extensa biblioteca de materiales de aprendizaje, incluidas tarjetas didácticas interactivas, soluciones completas de libros de texto y explicaciones detalladas. La tecnología avanzada y las herramientas que proporcionamos ayudan a los estudiantes a crear sus propios materiales de aprendizaje. El contenido de StudySmarter no solo es verificado por expertos, sino que también se actualiza regularmente para garantizar su precisión y relevancia.
Aprende más