20 Create en 3 tablas relacionadas en el curso de Sistema de gestión escolar(PHP y MySql) FullStack

Duración: 45 min
Módulo: 🏢 Módulo Personal Administrativo (CRUD Complejo) Lección 1 de 3

Descripció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:

  1. Se inicia la transacción con la sentencia $pdo->beginTransaction() [27:35].
  2. Si las tres inserciones son exitosas, se aplica $pdo->commit() y se guardan los cambios.
  3. 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:

  1. Registro en usuarios (Primero):
    • Se inserta el rol_ID y el correo electrónico.
    • La contraseña se establece por defecto usando el número de la Cédula de Identidad (CI) del administrativo, que luego es encriptada antes de guardarse [29:06].
    • Resultado: Se recupera el ID_usuario recién generado usando lastInsertId() [31:35].
  2. 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].
  3. 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.