20 Create en 3 tablas relacionadas en el curso de Sistema de gestión escolar(PHP y MySql) FullStack
Duración: 45 minDescripción
💻 Lección 20: Registro (Create) en Tres Tablas Relacionadas
El video https://youtu.be/AC3mYxCbh2c se enfoca en implementar la funcionalidad de Registro (Create) para el personal administrativo, un proceso complejo que debe insertar datos de manera segura y atómica en tres tablas de la base de datos simultáneamente: usuarios, personas y administrativos.
1. 🏗️ Configuración Inicial y Formulario
El desarrollador comienza la lección creando toda la estructura del módulo:
- Estructura de Vistas: Se crean las vistas necesarias (Index, Show, Edit, Create) dentro de un nuevo directorio llamado administrativos [04:16].
- Estructura del Controlador: Se establece el directorio y los archivos del controlador para gestionar las peticiones.
- Diseño del Formulario Create: El formulario de creación de un nuevo administrativo se diseña para capturar todos los datos necesarios para las tres tablas en una sola interfaz [14:10]. Los campos incluyen:
- Rol.
- Nombres, Apellidos, CI.
- Fecha de Nacimiento, Celular, Profesión, Dirección.
- Correo Electrónico (agregado al formulario ya que es vital para la tabla usuarios) [25:57].
2. 🛡️ La Solución: Transacciones de Base de Datos (PDO)
El mayor desafío es asegurar que, si el registro en alguna de las tres tablas falla, ningún dato parcial quede guardado en las otras. Para garantizar la integridad de los datos, se utiliza el concepto de Transacciones de PDO en el controlador:
- Se inicia la transacción con la sentencia $pdo->beginTransaction() [27:35].
- Si las tres inserciones son exitosas, se aplica $pdo->commit() y se guardan los cambios.
- Si ocurre cualquier error en cualquiera de las inserciones, se ejecuta $pdo->rollBack(), deshaciendo todos los cambios anteriores dentro de esa transacción [37:34].
3. 🎯 Flujo de Inserción Secuencial
El registro debe seguir una secuencia estricta para que las llaves foráneas se generen correctamente:
- Registro en usuarios (Primero):
- Registro en personas (Segundo):
- Se insertan todos los datos personales (nombres, CI, dirección, etc.).
- Se utiliza el ID_usuario obtenido en el paso 1 como llave foránea.
- Resultado: Se recupera el ID_persona recién generado usando lastInsertId() [33:48].
- Registro en administrativos (Tercero):
- Esta tabla solo requiere el ID_persona (obtenido en el paso 2) como llave foránea, completando la relación de tres vías [34:27]. Este flujo garantiza que el registro de un nuevo administrativo quede vinculado correctamente a su información de login (tabla usuarios) y a sus datos personales (tabla personas) de forma simultánea y segura.
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️