No tienes acceso a esta clase

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

Relaciones 1 a 1 embebidas

13/22
Recursos

¿Cómo funcionan las relaciones 1 a 1 embebidas?

Las relaciones 1 a 1 embebidas son una estrategia utilizada para organizar datos de manera eficiente dentro de una base de datos, especialmente cuando manejamos información que se consulta de manera conjunta. Imaginemos un e-commerce donde un usuario necesita dos direcciones diferentes: una residencia y una de envío. En vez de crear campos separados para cada atributo, tomamos el enfoque de subdocumentos, favoreciendo la coherencia y la facilidad de consultas.

¿Cómo se estructuran los subdocumentos?

Para estructurar esta información, utilizamos subdocumentos que permiten agrupar atributos relacionados, tales como la dirección, dentro del documento principal del usuario. Supongamos un usuario con los siguientes datos:

{
  "nombre": "Juan",
  "email": "[email protected]",
  "address": {
    "calle": "Carrera 87",
    "ciudad": "Bogotá",
    "zip": "111111"
  },
  "shipping_address": {
    "calle": "Avenida Siempre Viva",
    "ciudad": "Bogotá",
    "zip": "222222"
  }
}

Este enfoque no solo simplifica la consulta, sino que también mantiene unida la información pertinente.

¿Cómo se gestionan las consultas con subdocumentos?

Una de las grandes ventajas de los documentos embebidos es la facilidad para realizar consultas específicas. Al estar toda la información cohesiva, podemos buscar usuarios según atributos del subdocumento sin complicaciones adicionales. Por ejemplo, ¿qué pasa si necesitamos encontrar qué usuarios residen en una ciudad específica?

db.users.find({ "address.city": "Bogotá" })

Esto devolverá todos los usuarios cuya dirección tenga la ciudad de Bogotá, haciendo el proceso de consulta más ágil al no requerir unir varias colecciones.

¿Cuándo es recomendable usar estas relaciones?

Determinar cuándo usar una relación 1 a 1 embebida depende de varias señales:

  • Consulta conjunta de datos: Si al consultar un usuario también se busca invariablemente su dirección, optar por relaciones embebidas es preferible.
  • Dependencia directa: Cuando un subdocumento es más un atributo que un documento independiente, como las direcciones de un usuario.
  • Simplificación: La mayoría de las relaciones 1 a 1 (90% de las veces) se benefician de este enfoque, ya que evita la creación de múltiples referencias innecesarias.

¿Existen excepciones?

Aunque es común embebir, hay casos excepcionales (aproximadamente el 10% de las situaciones) donde la referencia puede ser necesaria, especialmente si el documento secundario es esencialmente un artículo reutilizable o tiene significancia propia.

¿Qué sigue?

Es fundamental entender cuándo aplicar cada tipo de relación para optimizar nuestras bases de datos. Te animamos a seguir explorando sobre cómo expresar relaciones con referencias y los casos de uso específicos para maximizar el rendimiento y la eficiencia de tus sistemas de datos. ¡Continúa aprendiendo y perfeccionando tus habilidades en el manejo de bases de datos!

Aportes 4

Preguntas 2

Ordenar por:

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

Relaciones 1 a 1 embebidas

La utilizamos cuando tenemos una dependencia interna de ciertos atributos que estan relacionados o que se repiten para diferentes casos. Entonces se realizaran subdocumentos que contengan esos atributos relacionados.

Casos recomendables de uso

En el 90% de los casos, cuando hay una relacion 1:1, esta suele ser embebida.

  • Cuando la informacion se consulta en conjunto
  • Los sub-documentos sean una dependencia directa

Por ejemplo:

Tenemos en una tienda online un usuario que tiene una direccion de su casa y otra de envio. Estas direcciones tienen varios atributos que comparten y para cada uno estan relacionados.

Entonces agrupamos estas propiedades en sub-documentos (objetos) en direccion casa y direccion de envio.

Insertar datos para embebed 1-1

db.users.insertOne({ // insertar un documento
    name: "pam", // propiedad del documento
    address: { // subdocumento (Embebido)
        street: "Calle falsa 123", // propiedad del subdocumento
        city: "Sprinfield",
        zip: 1234
    },
    shipping_address: {
        street: "Calle falsa 124",
        city: "Sprinfield",
        zip: "1235"
    }
})

Consultar datos en embebed 1-1

db.users.find({
    "address.city": "Sprinfield" // Filtrar con una propiedad de un sub-documento
})

Relaciones

  • Enbeber; dentro del mismo documento
  • Referenciar; dsando el ObjectId de otra colección

Un método para identificar cuál opción usar nos hacemos la siguiente pregunta:

  • ¿Qué tan frecuente es CONSULTADA la información?
  • ¿Qué tan frecuente es ACTUALIZADA la información?
  • La información se consulta en CONJUNTO o POR PARTES?

Si se consulta en conjunto se recomienda EMBEBIDA
Si se consulta por partes se recomienda REFERENCIADA

En el 90% de los casos, cuando hay una relacion 1:1, esta suele estar EMBEBIDA.

En la gran mayoría de los casos las **relaciones 1-1 ** en mongodb son embebidas, ya que estas se manejan como si fueran atributos directos de la entidad principal dentro de subdocumentos y por lo general la información se consulta en conjunto (existe una interdependencia directa de los datos).

Una relación 1 a 1 embebida se recomienda cuando: 1. La información se consulta en conjunto (ej. usuario y su dirección). 2. Los subdocumentos son una dependencia directa del documento principal. 3. En el 90% de los casos, las relaciones 1 a 1 son embebidas. Esto mejora la eficiencia en las consultas.