MÓDULO 2
Diseño y Modelo Relacional:
El Arte de Conectar Ideas
Aquí es donde la magia realmente sucede. Aprenderás a tomar un problema grande y desordenado, y a transformarlo en un sistema de tablas limpias, eficientes y conectadas. Es la habilidad más importante de un arquitecto de datos.
Construyendo la Base de Datos de CPEM N°61
Imaginemos que queremos guardar las notas de los alumnos. El primer impulso sería crear una gran tabla con todo junto. Veamos por qué eso es una mala idea.
El Enfoque Incorrecto: La "Súper Tabla"
¿Ves el problema? El nombre "Ana Pérez", el curso "2B" y el nombre "Profedotti" se repiten una y otra vez. Esto se llama redundancia. Ocupa espacio y, peor aún, ¡es una fábrica de errores! ¿Qué pasa si escribimos "Profedoti" por error en una fila? Para la base de datos, serían dos personas distintas.
La Solución Elegante: Disgregar y Relacionar
La solución es crear una tabla para cada "cosa" o "entidad" y luego conectarlas. Esto se llama Modelo Relacional. Cada registro tendrá un identificador único, una "cédula de identidad" que no se puede repetir, al que llamaremos Clave Primaria (ID).
Tabla: Alumnos
Tabla: Materias
Tabla: Profesores
↓
La Clave Foránea: El Pegamento Mágico
Para conectar las tablas, usamos una Clave Foránea (Foreign Key o FK). Es una copia de la Clave Primaria de una tabla que ponemos en otra para crear un enlace. Ahora, en nuestra tabla de Notas, no guardamos nombres, ¡solo los IDs!
Tabla: Notas
¡Magia! No hay repeticiones. Cada dato está en un solo lugar. Es eficiente, seguro y ordenado. Acabas de entender la base de casi toda la tecnología moderna.
La Receta del Orden: Normalización
Este proceso de organizar las tablas para reducir la redundancia y mejorar la integridad de los datos tiene un nombre: Normalización. Es un conjunto de reglas o "formas normales". Por ahora, nos enfocaremos en las primeras y más importantes:
1FN: Primera Forma Normal
"Cada celda de tu tabla debe tener un solo valor". Prohíbe tener listas dentro de una celda. Ya lo cumplimos, ¡cada dato tiene su propio lugar!
2FN: Segunda Forma Normal
"Todos los campos de una tabla deben depender completamente de la Clave Primaria". Al separar Alumnos, Materias y Profesores, ¡también la cumplimos!
¡Ahora te toca a ti! Sé el arquitecto de CPEM N°61
Ejercicio 1: Tabla de Cursos
Nuestra base de datos necesita saber a qué curso pertenece cada alumno. Diseña la tabla `Cursos` (con su Clave Primaria y campos). Luego, ¿qué campo agregarías a la tabla `Alumnos` para conectarlos?
Ejercicio 2: Asistencia de los Alumnos
Queremos registrar la asistencia de cada alumno a cada materia. Piensa en esto: un alumno puede faltar a muchas clases, y en una clase faltan muchos alumnos. ¿Qué tipo de relación es? ¿Necesitarías una tabla nueva? Si es así, ¿cómo la diseñarías?
Ejercicio 3: Los Preceptores
Cada curso tiene un solo Preceptor a cargo. ¿Dónde guardarías esa información? ¿Crearías una tabla nueva para `Preceptores`? ¿Cómo la conectarías a la tabla `Cursos`?
Análisis de las Soluciones
Solución 1: Tabla de Cursos
1. Creamos la tabla `Cursos`:
2. Para conectar un alumno a un curso, agregamos una Clave Foránea en la tabla `Alumnos`:
Solución 2: Asistencia de Alumnos
La relación es de Muchos a Muchos. Necesitamos una tabla intermedia, que podríamos llamar `Asistencias`.
Cada fila en esta tabla significa que un alumno específico faltó a una materia específica en una fecha concreta. ¡Sin redundancia!
Solución 3: Los Preceptores
Sí, lo mejor es crear una tabla `Preceptores` (con `ID_Preceptor` y `Nombre`). La relación entre un Curso y un Preceptor es de Uno a Muchos (un preceptor puede tener varios cursos a cargo, pero un curso tiene un solo preceptor).
Para conectarlos, agregamos la Clave Foránea en el lado de los "muchos", es decir, en la tabla `Cursos`: