Introducción

1

Modelado de Datos en MongoDB para E-commerce

2

Modelado de Datos en MongoDB: Uso de JSON y Diagrama Entidad-Relación

3

Modelamiento de Datos: Metodología y Restricciones en Bases de Datos

Proyecto

4

Creación de Clúster y Bases de Datos en Mongo Atlas

5

Modelado de Workloads en Bases de Datos con MongoDB

6

Configuración de Entorno y Conexión a MongoDB con VSCode

Validación de datos

7

Validación de Datos en MongoDB: Mantén la Integridad de la Información

8

Validaciones de Datos: Numbers, Booleanos y Enums en JSON Schema

9

Validación de Arrays y Subdocumentos en Bases de Datos NoSQL

10

Validación de Passwords con Expresiones Regulares en MongoDB

11

Validación de Datos en MongoDB: JSON Schema y Actualizaciones

Relaciones

12

Relaciones en Bases de Datos NoSQL: Embebidas y Referenciales

13

Relaciones 1 a 1 embebidas en bases de datos: cuándo y cómo usarlas

14

Relaciones Uno a Uno Referenciadas en Bases de Datos Documentales

15

Relaciones Uno a Muchos: Embebidas y Referenciadas en Bases de Datos

16

Relaciones Uno a Muchos con Referencias en Bases de Datos

17

Relaciones Muchos a Muchos en Bases de Datos: Tiendas y Productos

18

Relaciones Muchos a Muchos en Bases de Datos Documentales

Bonus: patrones

19

Desnormalización en Bases de Datos Documentales: Optimización Avanzada

20

Aplicación del Computed Pattern en Bases de Datos MongoDB

21

Balance entre Simplicidad y Rendimiento en MongoDB

Próximos pasos

22

Modelado de Datos con MongoDB: Relaciones y Consultas Avanzadas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Relaciones en Bases de Datos NoSQL: Embebidas y Referenciales

12/22
Recursos

¿Qué son las bases de datos no relacionales?

Las bases de datos no relacionales, comúnmente conocidas como NoSQL, han revolucionado la forma en que almacenamos e interactuamos con la información. A menudo, la percepción es que estas bases de datos no pueden manejar relaciones, pero eso no es del todo correcto. Si bien los sistemas tradicionales estructuran los datos en tablas, las bases de datos no relacionales como MongoDB organizan la información a través de documentos. Esto permite una flexibilidad única para representar relaciones dentro y entre documentos.

¿Cuáles son los tipos de relaciones en bases de datos?

Las bases de datos, ya sean relacionales o no, manejan tres tipos básicos de relaciones:

  • One to One (1:1): Una entidad está asociada a otra entidad única. Ejemplo clásico: un usuario y su credencial única.
  • One to Many (1:N): Una entidad está relacionada con muchas otras. Por ejemplo, un usuario puede poseer varios libros.
  • Many to Many (N:N): Varias entidades están relacionadas con múltiples entidades. Un claro ejemplo es un autor que ha escrito múltiples libros y un libro que puede tener varios autores.

¿Cómo se expresan estas relaciones en bases de datos documentales?

En bases de datos documentales como MongoDB, las relaciones se pueden expresar de dos maneras: embebidas o referenciadas.

¿Qué significa embeber documentos?

Embeber documentos implica incluir un subdocumento dentro de otro documento. Esto es útil cuando se desea simplificar el acceso y cuando las relaciones son intrínsecamente cercanas. Por ejemplo:

{
  "usuario": {
    "nombre": "Juan Pérez",
    "contacto": {
      "email": "[email protected]",
      "telefono": "123456789"
    }
  }
}

En este caso, el contacto del usuario está embebido dentro del documento del usuario, representando una relación uno a uno.

¿Cuándo es preferible utilizar la referencia?

Referenciar documentos significa mantener los documentos separados, utilizando un campo para conectar entre ellos. Es benéfico cuando los datos cambian con frecuencia o cuando se requiere acceder a los componentes individualmente. Un ejemplo básico sería tener documentos de usuario y contacto por separado, utilizándose un ID para referenciarlos:

// Documento de usuario
{
  "id": "1",
  "nombre": "Juan Pérez"
}

// Documento de contacto
{
  "usuarioId": "1",
  "email": "[email protected]",
  "telefono": "123456789"
}

Aquí, la referencia a través de usuarioId en el documento de contacto conecta ambos documentos indicándonos que pertenecen al mismo usuario.

¿Cómo decidir entre embeber o referenciar?

Existen tres preguntas claves que deben guiar tu decisión:

  1. Frecuencia de consulta: ¿Con qué frecuencia se consulta esa información? Si la respuesta es frecuentemente, es probable que sea beneficioso embebir los documentos.

  2. Frecuencia de actualización: ¿Con qué frecuencia se actualiza la información? Un alto ritmo de cambio favorece el uso de referencias, ya que se evita reestructurar conjuntos de datos embebidos.

  3. Consulta conjunta o separada: ¿La información se consulta en conjunto o de manera aislada? Si los datos se suelen necesitar conjuntamente, consideraría embebirlos; de lo contrario, referencia puede ser una mejor opción.

¿Cómo se representan estas relaciones visualmente?

Para las bases de datos documentales, la visualización de las relaciones es fundamental. En un diagrama entidad-relación, una entidad embebida podría representarse directamente dentro de otra. Por el contrario, los documentos referenciados se conectan a través de líneas indicando la relación.

Adoptar este enfoque flexible te permitirá optar por la mejor estrategia para cada tipo de relación considerando tus necesidades específicas. Las bases de datos documentales como MongoDB ofrecen esta dualidad de modos de relación, permitiendo elegir la opción más eficaz según el contexto y requerimientos de tus datos.

Explora este mundo lleno de posibilidades con entusiasmo. Estás en el camino correcto para dominar la tecnología y seguir ampliando tus horizontes en el mundo de las bases de datos. ¡Sigue aprendiendo!

Aportes 7

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Otro de los puntos a considerar para definir si embeber o referenciar es la performance de la consulta.

ejem: si tienes una entidad y tienen embebido un numero x de informacion al hacer la consulta a la base de datos, si tienes que consultar en una coleccion muy grande, es un delta de tiempo, luego otro delta asociado al manejo de la data que te regresa.

Mientras que si es referenciado, puedes traer por partes la informacion para ir construyendo sea lo que sea que necesiten las reglas del negocio.

Si bien esto entra dentro de las 3 preguntas que se hace para definir cual manera de modelado elegir, esta es una pregunta posterior a tu desicion.

Para realizar el modelamiento de datos manejamos 2 formas de realizarlo:

  1. Embebida: Dentro de una coleccion registramos un documento que tenga otras subcoleciones.
  2. Referenciada: Se realiza relacion con varios coleciones agregando un identificador unico.
    Una de estas dos tecnicas de modelamiento se utilizara en base al uso que necesitemos. Pero una forma de poder abarcarlo es realizando algunas de estas preguntas:
  • Que tan frecuente es consultada la informacion
  • Que tan frecuente se actualiza la informacion
  • La informacion se consulta en conjunto o por partes ?

Embeber vs Referenciar

  • Embeber: Usar sub-documentos para realizar las relaciones, que esta un documento dentro de otro.

    • Mejora rendimiento en busqueda de muchos datos relacionados
    • Limitado a 1-1 y 1-N en una direccion
    • Cambios contenidos
  • Referenciar: Los documentos estan separados y se hacen referencia entre ellos con identificadores. En UML, se expresan con cajitas separadas y una cardinalidad.

    • Reduce el tamaño de la base de datos
    • No repetir datos
    • Actualizacion de datos unica para muchos
    • Permite 1-1, 1-N, N-1 y N-N

Preguntas para decidir cual

  1. ¿Que tan frecuente es consultada esa información?
  2. ¿Que tan frecuente se actualiza esa información?
  3. ¿La información se consulta en conjunto o por partes?
Comparto estos apuntes (personales) que pueden ser de utilidad para comprender el tema de las relaciones en bd: <https://github.com/JimcostDev/mongodb_developer_path/tree/master/data_modeling/relationships>

Este tema es muy importante, porque permite que integrar el modelo y hacerlo eficiente.

Algo Muy Importante que ayuda por asimilar esto <\<Embeber vs Referenciar>> mediante un Diagrama ER y imaginar los documentos y subdocumentos , dejar de pensar en la forma tradicional de Bases de Datos Relacionales { SQL } para abrir un Nuevo paradigma de Db != SQl . si sigues pensando en SQl pierdes porque aqui ls colleciones funcionan de una forma diferente, si bien es cierto que existen muchas similituedes que son Analogias de Relaciones entre tablas SQl, Es mejor pensar en Documentos embebidos en ColLections de datos Mayores para hacder consultas a una entidad que tiene embebido documentos adentro tal como lo hemos hecho a lo largo del curso.

Embeber o referenciar
son las dos unicas dos formas de relacionar colecciones en mongodb

sub documentos = embeber
documentos separados = referencia