18 Normalización de la base de datos curso de Sistema de gestión escolar con (PHP y MySql) FullStack

Duración: 21 min
Módulo: 🗄️ Diseño de la Base de Datos Lección 2 de 3

Descripción

💻 Lección 18: Normalización Avanzada de la Base de Datos

El video https://youtu.be/dUfPWJp_UCo aborda un problema de redundancia de datos en el modelo de entidad que se estaba construyendo, y aplica un proceso de normalización para centralizar la información personal.

1. 🛑 El Problema de la Duplicación de Datos

En el diseño anterior, tablas como administrativos, docentes, estudiantes y padres_de_familia iban a tener que almacenar campos de identificación personal comunes, tales como: nombres, apellidos, Cédula de Identidad (CI), fecha de nacimiento, dirección y número de celular [01:15].

Repetir estos seis o siete campos en cuatro tablas diferentes genera un sistema desordenado y difícil de mantener.

2. 🧠 Solución: Centralización con la Tabla personas

Para eliminar la redundancia, el desarrollador aplica el principio de normalización creando una nueva entidad central llamada personas.

  • Tabla personas (El Nuevo Centro): Esta tabla almacena toda la información personal común que ya no se repite en otros módulos [01:50]. Además, se relaciona directamente con la tabla usuarios mediante una llave foránea llamada usuario_ID [07:30].
  • Datos Centralizados:
    • Nombres y Apellidos
    • Cédula de Identidad (CI)
    • Fecha de Nacimiento
    • Dirección
    • Celular
    • Profesión
    • ID de Usuario (para login y roles)

3. 🔗 Nueva Estructura y Relaciones

Con la tabla personas, la estructura del sistema se simplifica drásticamente. Las tablas específicas de cada rol ahora solo necesitan un campo para relacionarse con este nuevo núcleo [05:37]:

  • Las tablas administrativos, docentes, estudiantes y padres_de_familia ahora solo tienen su propio ID primario y una única llave foránea llamada persona_ID (que apunta a la tabla personas).

Este diseño establece una jerarquía clara de relaciones:

  1. Rol Específico (Ej.: un administrativo) se vincula a una Persona.
  2. La Persona se vincula a un Usuario.

4. ⚠️ Ajuste de Error en el Sistema

Debido a que el campo "nombre" fue eliminado de la tabla usuarios (ya que ahora está en personas), el sistema arrojó un error en el layout principal. Para corregirlo temporalmente, el desarrollador modifica el código para que muestre el correo electrónico del usuario logueado en lugar de su nombre en la barra de navegación, hasta que se implemente la lógica para buscar el nombre en la tabla personas [19:35].