🔄 ¿Qué son las Acciones Referenciales?
Las acciones referenciales son acciones automáticas que realiza la base de datos en función de lo que le indiquemos al crear la tabla. Estas acciones se ejecutan cuando se actualiza o elimina un registro que tiene relaciones con otras tablas.
📊 Escenario: Relación 1:N entre Tablas
Tabla Padre: Proveedores (Primary Key)
Tabla Hija: Productos (Foreign Key → Proveedores)
Pregunta clave: ¿Qué sucede cuando elimino o actualizo un proveedor que tiene productos asociados?
🚫 RESTRICT
No permite la operación si existen registros relacionados.
🌊 CASCADE
Propaga automáticamente la operación a registros relacionados.
∅ SET NULL
Establece a NULL los campos de clave foránea relacionados.
⚙️ SET DEFAULT
Establece un valor por defecto en los campos relacionados.
📝 Reglas de Actualización (ON UPDATE)
| Acción | Comportamiento | Cuándo Usar |
|---|---|---|
| RESTRICT | No permite actualizar si hay referencias | Máxima seguridad de datos |
| CASCADE | Actualiza automáticamente las referencias | Sincronización automática |
| SET NULL | Convierte referencias a NULL | Relaciones opcionales |
| SET DEFAULT | Establece valor por defecto | Fallback predefinido |
💼 Ejemplo Práctico: ON UPDATE RESTRICT
🏗️ Creación de Tablas
📊 Datos de Prueba
❌ Actualización Rechazada
No se puede actualizar porque existen registros en tabla2 que referencian valor1 = 1
✅ Solución
1. Actualizar primero las referencias en tabla2
2. Luego actualizar el registro en tabla1
🌊 Ejemplo: ON UPDATE CASCADE
✅ Actualización Automática
Los valores 1 en tabla2.valor2 se actualizaron automáticamente a 3
🗑️ Reglas de Borrado (ON DELETE)
🚫 ON DELETE RESTRICT
❌ Borrado Rechazado
Primero hay que eliminar o actualizar los registros dependientes
🌊 ON DELETE CASCADE
⚠️ CUIDADO: Borrado en Cascada
🚨 RIESGO: En sistemas Big Data, esto puede eliminar millones de registros relacionados
∅ ON DELETE SET NULL
Los campos valor2 que apuntaban a 1 ahora son NULL
⚙️ ON DELETE SET DEFAULT
🛠️ Configuración Previa
✅ Borrado con Valor por Defecto
⚠️ Consideraciones de Seguridad
🚨 Peligros del CASCADE
- Eliminaciones masivas: Un solo DELETE puede borrar millones de registros
- Pérdida de datos: La recuperación requiere backups
- Impacto en rendimiento: Operaciones costosas en sistemas grandes
- Efecto dominó: Las eliminaciones pueden propagarse por múltiples tablas
✅ Mejores Prácticas
- RESTRICT por defecto: Máximo control sobre los datos
- CASCADE con cuidado: Solo en relaciones maestro-detalle obvias
- Validar antes de aplicar: Entender el impacto de cada acción
- Backups regulares: Siempre tener copias de seguridad
- Pruebas en desarrollo: Validar comportamiento antes de producción
📋 Resumen Ejecutivo
| Acción | UPDATE | DELETE | Nivel de Riesgo |
|---|---|---|---|
| RESTRICT | Impide actualización si hay referencias | Impide borrado si hay referencias | BAJO |
| CASCADE | Actualiza automáticamente referencias | Borra automáticamente registros relacionados | ALTO |
| SET NULL | Convierte referencias a NULL | Convierte referencias a NULL | MEDIO |
| SET DEFAULT | Usa valor por defecto | Usa valor por defecto | MEDIO |
🔑 Conceptos Clave para Recordar
- RESTRICT: Opción por defecto - máximo control manual
- CASCADE: Potente pero peligroso - usar con extrema precaución
- SET NULL: Útil para relaciones opcionales
- SET DEFAULT: Requiere valor por defecto válido en tabla padre
- Orden de operaciones: Siempre actualizar/borrar dependientes antes que padres con RESTRICT
- Validación previa: Entender las relaciones antes de aplicar acciones
🎯 Próximos Pasos
En la siguiente clase realizaremos un ejercicio práctico integral que combine todos los conceptos vistos del comando CREATE TABLE, incluyendo restricciones, claves foráneas y acciones referenciales en un caso de uso real.