¿QUÉ ES LA INTEGRIDAD REFERENCIAL EN MYSQL? GUÍA PRÁCTICA
La Integridad Referencial es uno de los conceptos más importantes en el diseño de bases de datos relacionales. En MySQL se implementa principalmente mediante las claves foráneas, o Foreign Keys, y es clave para mantener la consistencia y confiabilidad de los datos.Es decir, que es una regla que garantiza que las relaciones entre tablas sean válidas evitando que existan registros que hagan referencia a datos que no existen.
Ejemplo
Se tiene una tabla "pedidos" que referencia a la tabla "clientes", no debe poder existir un pedido cuyo "cliente_id" no corresponda a ningún cliente real.¿Para qué sirve?
- Mantener la consistencia de los datos.
- Evitar registros huérfanos.
- Proteger las relaciones entre tablas.
- Reducir errores en la base de datos.
¿Cómo funciona?
Se tienen estas dos tablas:- Tabla clientes
- ID (PRIMARY KEY)
- Nombre
- Tabla pedidos
- ID (PRIMARY KEY)
- cliente_id (FOREIGN KEY → referencia a clientes.id)
Ejemplo
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
cliente_id INT,
fecha DATE,
total DECIMAL(10,2),
FOREIGN KEY (cliente_id) REFERENCES clientes(id)
ON DELETE RESTRICT -- No permite borrar cliente si tiene pedidos
ON UPDATE CASCADE -- Si cambia el ID del cliente, se actualiza en pedidos
);
Acciones al eliminar o actualizar datos
Cuando se define una clave foránea en MySQL, se puede elegir cómo comportarse ante borrados o actualizaciones de datos:- "RESTRICT o "NO ACTION": Impide borrar/actualizar si hay registros relacionados.
- "CASCADE": Borra o actualiza automáticamente los registros relacionados.
- "SET NULL": Establece el valor de la clave foránea como NULL.
- "SET DEFAULT": Establece un valor por defecto.
Ejemplo práctico de comportamiento
-- Intento de eliminar un cliente que tiene pedidos
DELETE FROM clientes WHERE id = 1;
-- Resultado: Error (si usas RESTRICT)
-- MySQL no permite eliminar el cliente porque tiene pedidos asociados.
Ventajas clave
- Datos más fiables y consistentes.
- Menos errores en la aplicación.
- Mayor integridad del modelo de datos.
- Facilita el mantenimiento a largo plazo.