Muchos a muchos
Por ejemplo, si queremos conocer los profesores que dan clase a un grupo o los grupos a los que da clase un profesor determinado, necesitamos en principio dos tablas: Profesores y Grupos. ¿Y cuál sería la relación entre estas dos tablas? Pues bien, para establecerla podríamos leer que un profesor da clases a varios grupos (1A, 1B, 2C, etcétera) y un grupo recibe clases de varios profesores (Carlos Pérez, Antonio García, etcétera). Por lo tanto, nos encontramos entre una relación MUCHOS A MUCHOS.
Desde un punto de vista teórico diríamos que en las relaciones Muchos a muchos a cada registro de la tabla A se le pueden asociar varios registros de la tabla B y cada registro de la tabla B puede estar relacionado con más de un registro de la tabla A.
Otros ejemplos para ilustrar este modelo de relación podrían ser:
- Los alumnos que participan en las actividades deportivas del centro. Concretamente un alumno podría participar en más de un deporte (Fútbol, Baloncesto, etcétera) y a su vez cada equipo está formado por varios componentes. Esta relación también sería del tipo Muchos a muchos.
- Con las actividades extraescolares ocurre lo mismo. Un alumno puede asistir a más de una (manualidades, música, idiomas, etcétera) y en cada una de ellas, encontraremos a varios alumnos.
Problemas y solución para las relaciones Muchos a muchos
Las relaciones Muchos a muchos no son recomendables y debemos tratar de evitarlas utilizando TABLAS INTERMEDIAS en las que se utilizarían relaciones de uno a muchos. Una tarea sencilla como podría ser obtener un listado de todos los profesores que imparten clases en 1ºB se convierte en una verdadera pesadilla si mantenemos esta relación. La solución pasa por crear una TABLA INTERMEDIA que nos permita dividir la relación MUCHOS A MUCHOS en dos relaciones UNO A MUCHOS como puedes ver en la figura 2.34.
Figura 2.34
Importante
Actividad 8
La base de datos utilizada como ejemplo contiene diferentes tablas pero faltarían dos tablas intermedias importantes, concretamente se trata de las tablas Participantes y ProfesoresCursos.
Tabla Participantes
En la tabla “Participantes” necesitamos utilizar los tres campos disponibles para componer la clave única. Además, teniendo en cuenta que esta tabla es una de las más importantes de nuestro ejemplo estudiemos mejor el sentido de cada uno de sus campos:
- Alumno: Hace referencia al código de expediente del alumno. Con este dato obtendremos después el resto de información necesaria para identificar al alumno.
- ParticipanteEquipo: Código del equipo del que forma parte el alumno. Por ejemplo, el equipo “LocosDelBalón” tiene asociado el código 0, pues bien, este será el dato que necesitamos para completar esta tabla.
- ParticipanteActividad: De nuevo utilizamos un código, pero esta vez corresponde a la actividad en la que participa el equipo: “Fútbol”, “Baloncesto”…
A continuación crea esta tabla teniendo en cuenta los siguientes datos:
Nombre del campo |
Tipo de dato |
Propiedades |
Descripción |
Alumno |
Integer [INTEGER] |
Por defecto |
Código de alumno. (CAMPO CLAVE) |
ParticipanteEquipo |
Integer [INTEGER] |
Por defecto |
Código del equipo. (CAMPO CLAVE) |
ParticipanteActividad |
Integer [INTEGER] |
Por defecto |
Código de la actividad. (CAMPO CLAVE) |
Tabla ProfesoresCursos
La tabla ProfesoresCursos nos permitirá identificar de forma precisa los grupos (cursos) a los que imparte clase cada profesor. Además con el campo Tutor sabremos qué curso está directamente tutelado por el profesor. Para completar esta actividad diseña la tabla ProfesoresCursos a partir de la siguiente información.
Nombre del campo |
Tipo de dato |
Propiedades |
Descripción |
Profesor |
Integer [INTEGER] |
Por defecto |
Código del profesor. (CAMPO CLAVE) |
Curso |
Integer [INTEGER] |
Por defecto |
Código del curso asociado al profesor (1B, 1C, 2A...). (CAMPO CLAVE) |
Tutor |
Sí/No [BOOLEAN] |
Valor predeterminado, configurar a “No”. |
Si es tutor del curso el campo estará a “Sí”. |