Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Relación N:N entre 3 entidades

Estas en el tema de Relación N:N entre 3 entidades en el foro de Bases de Datos General en Foros del Web. Hola, todos! Mi inquietud es la siguiente: Estoy modelando la base de datos de mi proyecto y estoy trabajando con Symfony. Sucede que en mi ...
  #1 (permalink)  
Antiguo 01/09/2012, 18:17
 
Fecha de Ingreso: septiembre-2012
Mensajes: 13
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Relación N:N entre 3 entidades

Hola, todos!
Mi inquietud es la siguiente:

Estoy modelando la base de datos de mi proyecto y estoy trabajando con Symfony.

Sucede que en mi aplicación, un usuario puede crear un curso pero a la vez puede agregar a otros usuarios a ese curso como colaboradores. Cada usuario en un curso tiene su rol (revisor ortográfico, generador de contenidos, limpiador de derechos de autor, etc.). Un usuario puede pertenecer a muchos cursos con un único rol en cada uno de ellos.

Ejemplo:
Curso1 {(Juan, autor), (María, revisor ortográfico), (Claudia, derechos de autor)}
Curso2 {(María, autor), (Claudia, revisor ortográfico), (Juan, derechos de autor)}
Y así...

Siendo así, tengo 3 entidades: Usuario, Curso, Roles y según mi lógica, otra para la relación N:N que tendría los campos: id, usuario_id, curso_id, rol_id.

Lo que no sé es como mapear ese tipo de relación con las anotaciones ORM de Doctrine en Symfony 2. ¿Alguien tiene idea de cómo hacerlo o si hay otra forma más sencilla/eficiente de abordar el problema?

Agrezco su ayuda de antemano! ;)
  #2 (permalink)  
Antiguo 08/09/2012, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relación N:N entre 3 entidades

Cita:
Siendo así, tengo 3 entidades: Usuario, Curso, Roles y según mi lógica, otra para la relación N:N que tendría los campos: id, usuario_id, curso_id, rol_id.
No. Un Rol sólo puede estar relacionado con Usuario, porque sólo un usuario tiene un Rol. Un curso no posee Rol.
Los cursos no se relacionan con los roles, al menos no como atributo.
En todo caso, si un curso es para usuarios de un rol determinado, eso se incluye en la parametrización de los requisitos de inscripción, lo que se manejaría con otras tablas (si es que se usan para eso).
Cita:
Sucede que en mi aplicación, un usuario puede crear un curso pero a la vez puede agregar a otros usuarios a ese curso como colaboradores. Cada usuario en un curso tiene su rol (revisor ortográfico, generador de contenidos, limpiador de derechos de autor, etc.). Un usuario puede pertenecer a muchos cursos con un único rol en cada uno de ellos.
Lo que tienes allí es una relación entre el curso y un listado categorizado de roles que el curso requiere, cada uno de los cuales luego será cubierto por uno de los inscriptos.
Pero eso habla de que tienes por detrás una estructura más compleja:
Curso, Usuario, Usuario_Curso, Rol, Curso_Roles...
En definitiva, lo que tienes que ver es cómo se pueden construir las relaciones basadas en esquemas simples. No buscar agrupar relaciones que luego te compliquen el diseño y por ende el funcionamiento del sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/09/2012, 10:31
 
Fecha de Ingreso: febrero-2011
Mensajes: 55
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Relación N:N entre 3 entidades

Precisamente el "Rol" serìa un atributo de la tabla Usuario, me perdi un poco con la explicaciòn de gnz jaj

Etiquetas: doctrine, orm, relaciones, symfony
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:13.