relaciones relacion muchos mongodb many-to-many relational-database document-database

relacion - Cómo organizar una relación de muchos a muchos en MongoDB



mongodb relacion 1 a muchos (3)

Comprendamos muchas a muchas relaciones con ejemplos

  • libros a los autores
  • estudiantes a profesores

Los libros para autores tienen poca relación, por lo que podemos tener una serie de libros o autores dentro del documento de otro. Lo mismo aplica para los estudiantes a los maestros. También podríamos incrustarlo a riesgo de duplicación. Sin embargo, esto requerirá que cada estudiante tenga un maestro en el sistema antes de la inserción y viceversa. La lógica de la aplicación siempre puede no permitirlo. En otras palabras, el objeto principal debe existir para que exista el objeto secundario.

Pero cuando tiene una relación de muchos a muchos , use dos colecciones y tenga un enlace verdadero.

Tengo dos tablas / colecciones; Usuarios y grupos. Un usuario puede ser miembro de cualquier cantidad de grupos y un usuario también puede ser propietario de cualquier cantidad de grupos. En una base de datos relacional probablemente tenga una tercera tabla llamada UserGroups con una columna UserID, una columna GroupID y una columna IsOwner.

Estoy usando MongoDB y estoy seguro de que hay un enfoque diferente para este tipo de relación en una base de datos de documentos. ¿Debería incrustar la lista de grupos y grupos como propietarios dentro de la tabla Usuarios como dos matrices de ObjectID? ¿Debo también almacenar la lista de miembros y propietarios en la tabla de Grupos como dos matrices, reflejando efectivamente la relación que causa una duplicación de información de relación?

¿O es una tabla de grupos de usuarios puente un concepto legítimo en las bases de datos de documentos para muchas o muchas relaciones?

Gracias



Lo que he visto hacer, y lo que uso actualmente son las matrices integradas con ID de nodo en cada documento.

Entonces, el documento user1 tiene grupos de propiedades: [id1, id2]

Y document group1 tiene usuarios de propiedades: [user1]. El grupo de documentos2 también tiene usuarios de propiedades: [usuario1].

De esta forma obtienes un objeto de grupo y seleccionas fácilmente todos los usuarios relacionados, y lo mismo para el usuario.

Esto requiere un poco más de trabajo al crear y actualizar el objeto. Cuando dice que 2 objetos están relacionados, debe actualizar ambos objetos.

También hay un concepto DBReferences en MongoDB y, dependiendo de su controlador, extraerá los objetos referenciados automáticamente al recuperar un documento.

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef