Estoy trabajando en un proyecto en Symfony2 sobre un sistema de un colegio de Primaria y me surgió el siguiente problema. Tengo tres entidades relacionadas Profesor, Asignatura y Grupo. Las relaciones son las siguientes:
- Un profesor imparte una o varias asignaturas.
- Una asignatura es impartida por uno o varios profesores.
- Un profesor imparte en uno o varios grupos.
- En un grupo imparte uno o muchos profesores.
- Una asignatura se imparte en uno o varios grupos.
- En un grupo se imparte una o varias asignaturas.
En mi caso, una asignatura puede ser impartida en varios cursos y un curso se compone de varios grupos, por lo que para poderlas diferenciar necesito tener en la misma tabla la asignatura y el curso la que va dirigida, pero para no repetir para cada asignatura cada curso no le he añadido el curso como atributo en la entidad Asignatura, sino que se debe obtener mediante una relación de ambas entidades.
Creo que debería ser una relación ternaria, pero no sé como se implementa en doctrine. También se podría dividir la relación en tres relaciones Asignatura_Grupo, Profesor_Grupo y Profesor_Asignatura. Todos con relación muchos a muchos.Pero en este caso, no puedo conseguir, por ejemplo, el profesor que enseña matemáticas en 1º Primaria A.
A continuación muestro las tres relaciones con datos de prueba para que se pueda ver como no se puede obtener lo indicado anteriormente (indico con ¿? cuando no hay elección)
por ejemplo:
** Asignatura-Grupo **
ASIGNATURA (PK) _______GRUPO (PK)_____LIBRO DE TEXTO
Matemáticas 1º ____________1º Primaria______ libro_1_______________ OK
Matemáticas 2º ____________2º Primaria______ libro_2
Inglés 1º_________________1º Primaria______ libro_3
** Profesor-Grupo **
MAESTRO (PK)__________GRUPO (PK)_____HORARIO
José ____________________ 1º Primaria A_____M 09:00________ ¿?
José ____________________ 2º Primaria A_____M 11:00
Manuel__________________1º Primaria A_____T 09:00_________ ¿?
** Profesor-Asignatura **
PROFESOR (PK)_________ASIGNATURA (PK)
José ____________________ Matemáticas____________________ ¿?
José ____________________ Ciencias Naturales
Manuel__________________ Matemáticas ____________________¿?
Manuel__________________ Inglés
Creo que para obtener el resultado correcto debería tener una tabla de la relación ternaria como la siguiente:
PROFESOR (PK) __ ASIGNATURA (PK) __ GRUPO (PK) __ LIBRO DE T.___ HORARIO
José______________ Matemáticas________1º Primaria A_____libro_1_______ M 9:00__________OK
Manuel____________Inglés_____________ 1º Primaria A_____libro_3_______ T 09:00
Agradezco su ayuda, para saber cómo resolver este problema y si es una relación ternaria como se implementaría en doctrine.