Vista de Relaciones y Claves Foráneas (Foreign Keys con CASCADE)
Aprende a configurar Claves Foráneas (Foreign Keys) en phpMyAdmin mediante la Vista de Relaciones y a dominar las cláusulas ON DELETE y ON UPDATE CASCADE.
¿Qué es una Clave Foránea (Foreign Key) y para qué Sirve?
Una Clave Foránea es una restricción de integridad referencial que vincula una columna de una tabla secundaria (hija) con la clave primaria de otra tabla principal (padre).
Por ejemplo, en una tienda online, la columna pedidos.usuario_id debe apuntar obligatoriamente a un usuarios.id existente. Si intentas registrar un pedido para un usuario que no existe, el motor rechazará la inserción de inmediato, evitando datos huérfanos.
Los 3 Requisitos Previos Obligatorios
Antes de intentar crear una relación en phpMyAdmin, asegúrate de cumplir estas tres reglas o recibirás el molesto Error #1005: Can't create table (errno: 150):
- Motor InnoDB: Ambas tablas deben usar obligatoriamente el motor
InnoDB. - Tipos de Datos Idénticos: Si
usuarios.idesINT UNSIGNED, entoncespedidos.usuario_iddebe ser exactamenteINT UNSIGNED(mismo tipo, longitud y atributos). - Índice Creado: La columna en la tabla secundaria debe tener previamente un índice asignado (en la pestaña Estructura, pulsa en Índice sobre la columna
usuario_id).
Paso a Paso en la "Vista de Relaciones"
- Haz clic en la tabla secundaria (ejemplo:
pedidos). - Ve a la pestaña superior Estructura.
- Justo debajo de la lista de columnas, haz clic en el enlace "Vista de relaciones" (Relation view).
- En el formulario de restricciones de clave foránea:
- Nombre de restricción:
fk_pedidos_usuarios - Columna: Selecciona
usuario_id - Tabla de destino: Selecciona
usuarios - Columna de destino: Selecciona
id - ON DELETE (Al borrar):
•RESTRICT: Impide eliminar un usuario si aún tiene pedidos asociados (¡Máxima seguridad!).
•CASCADE: Si eliminas el usuario, se borran automáticamente todos sus pedidos en cascada.
•SET NULL: Si eliminas el usuario, el campousuario_iden el pedido se convierte enNULL. - ON UPDATE (Al actualizar): Selecciona
CASCADE(si el ID del usuario cambia, se actualiza en sus pedidos).
- Nombre de restricción:
- Haz clic en Guardar. ¡La relación física ha quedado establecida en el motor!
⚡ Sentencia SQL de Restricción de Clave Foránea (DDL)
Código que phpMyAdmin ejecuta internamente al guardar la relación:
-- Agregar restricción de clave foránea entre pedidos y usuarios
ALTER TABLE `pedidos`
ADD CONSTRAINT `fk_pedidos_usuarios`
FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`)
ON DELETE RESTRICT
ON UPDATE CASCADE;
-- Comprobar restricciones activas en la tabla
SELECT
CONSTRAINT_NAME,
TABLE_NAME,
COLUMN_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'tienda_online' AND TABLE_NAME = 'pedidos';
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Qué comportamiento tiene la cláusula "ON DELETE RESTRICT" en una clave foránea configurada en phpMyAdmin?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual de phpMyAdmin: Gestión de Bases de Datos y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.