Tipos de Relaciones en MongoDB

6 minuto(s)

Las aplicaciones que funcionan con bases de datos, en un estado inicial suelen ser sencillas y no requieren de consultas avanzadas a un documento de MongoDB. Pero con el paso del tiempo, ya sea por un requerimiento del proyecto u otro factor, es necesario realizar consultas más complejas que deben de funcionar con relaciones entre los datos. Las relaciones son habituales en las aplicaciones y en las que usan MongoDB también. En este post te compartiré los Tipos de Relaciones en MongoDB, vamos con ello.

Gráficos alimentados de datos desde una base de datos
MongoDB permite hacer relaciones entre documentos

Antes de continuar te invito a leer los siguientes artículos:

Asimismo, te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casay “Ventajas y Desventajas de Usar 2 o Más Monitores Para un Desarrollador” (Anchor Podcast): 

Spotify: Sound Cloud: Apple Podcasts Anchor Podcasts

Bien ahora continuemos con el Post: Tipos de Relaciones en MongoDB.

Tipos de Relaciones en MongoDB

A diferencia de las bases de datos relacionales, MongoDB no proporciona técnicas para definir buenas relaciones, pero brinda flexibilidad para definir el esquema de nuestra colección, esta es una de las principales ventajas de MongoDB.

MongoDB al ser flexible en cuanto a las relaciones, no es necesario seguir las reglas comunes y puedes definir el esquema en un formato de objeto como desees. Un esquema bien definido es muy importante en MongoDB para consultar los datos de manera más eficiente con menos prisa y también para mejorar la escalabilidad. Es posible que los objetos de esquema no deseados no afecten a tu base de datos en etapas anteriores, pero con la creciente cantidad de datos, las consultas pueden ralentizar el rendimiento y adquirir más memoria.

Las relaciones representan cómo los múltiples documentos están conectados lógicamente en MongoDB para crear una base de datos más manejable. Esto no es como normalizar en tablas, sino crear a través de relaciones incrustadas y referenciadas. Puedes configurar la relación según la necesidad de tus datos y el rendimiento de la consulta.

A continuación veamos los tipos de relaciones en MongoDB:

One to One (Uno a Uno)

One to One es la relación más fundamental. Una clave principal con un documento secundario incrustado crea una relación 1:1. Por ejemplo, un usuario puede tener un solo dni (documento nacional de identidad).

Relación One to One en MongoDB
Ejemplo de una Relación “Uno a Uno” en MongoDB

En una colección podria verse de la siguiente manera:


Aquí, los detalles del dni del usuario están incrustados en nro del dni, no hay necesidad de crear una colección separada.

One to Many (Uno a Muchos)

Una relación de uno a muchos es tener un documento principal con una clave con documentos secundarios incrustados o referenciados, lo que crea una relación 1:N. Por ejemplo un usuario puede tener varias mascotas, para esto, podemos crear relaciones mediante incrustaciones o referencias.

Relación One to Many en MongoDB
Las relaciones “One to Many” indican que un elemento pueden tener varios

En una colección podria verse de la siguiente manera:


Aquí, los datos de las mascotas están incrustados en la referencia mascotas, si deseas obtener los nombres de las mascotas del usuario, puedes usar la referencia.

One to Few (Uno a Pocos)

Las relaciones de uno a pocos se utilizan para conectar los datos principales con algunos datos secundarios. Por ejemplo, un solo usuario puede tener varias certificados, para almacenar esos pocos documentos, se deben usar relaciones incrustadas para tener un mejor rendimiento en las consultas.

Relación One-to-few en MongoDB
Las relaciones “Unos a Pocos” mejoran el rendimiento de las consultas

En una colección podria verse de la siguiente manera:

One to Squillions (Uno a Squillions)

Ahora supongamos que tienes millones de registros secundarios, como comenarios de YouTube de un video viral, probablemente se harían cada vez más grandes, para esto no incrustamos documentos secundarios ni almacenamos las matrices de Id de objetos de colección a los que se hace referencia, ya que estarán fuera de límite. La única forma preferida será tener un documento de respuesta, luego almacenar el objectId de respuesta en los documentos del comentario.

Relación One to Squillions en MongoDB
La relación “Uno a Squillions” permite organizar muchos datos pertenecientes a un elemento

En una colección podria verse de la siguiente manera:

Many to Many (Muchos a Muchos)

Ahora que hemos visto el padre único y los diferentes tipos de documentos secundarios, veamos la relación N:N. Por ejemplo tenemos conciertos, donde un usuario puede ser invitado a múltiples conciertos y un concierto puede tener múltiples usuarios.

Relación Many to Many en MongoDB
Las relaciones “Muchos a Muchos” permiten relacionar varios elementos con otros varios elementos

En una colección podria verse de la siguiente manera, cuando un usuario tiene varios conciertos:


Y cuando un concierto tiene varios usuarios:


En ambas colecciones, hay un subarreglo de objectID, creando relaciones de muchos a muchos.

Conclusión

En este post te he compartido los Tipos de Relaciones en MongoDB. Cuando hagas  tus relaciones, trata de que sean coherentes evitando la redundancia y preservando la integridad de los datos. Diseñar el modelo de esquema correcto parece bastante complicado, en el que intervienen varios conceptos y términos como ACID vs BASE vs BASEPROPERTIES, esquema dinámico y cómo manejar los diferentes escenarios del diseño del esquema para construir un sistema de producción robusto. Empieza por prácticar las relaciones y en el camino irás dominándolas, como se dice la práctica hace al maestro.

Nota(s)

  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.