Claves foráneas en MongoDB

Tahseen Tauseef 20 junio 2023
  1. Clave externa
  2. Referencias MongoDB
  3. Crear claves foráneas virtuales en MongoDB
  4. Conclusión
Claves foráneas en MongoDB

MongoDB es una base de datos muy conocida que funciona sin esquema. En su lugar, utiliza archivos similares a JSON para almacenar datos y no impone ninguna estructura.

MongoDB, a diferencia de los RDBMS tradicionales, requiere un enfoque distinto para el diseño de la base de datos. Pero, en general, la base de datos es más fácil de escalar porque no impone muchas restricciones.

Clave externa

Una clave externa es una columna o un conjunto de columnas que vinculan dos tablas. Comprende una columna de clave principal en la tabla principal vinculada a otras columnas en las tablas secundarias.

Tomemos, por ejemplo, dos tablas: país y ciudad. Queremos vincular estas dos tablas de manera que cada ciudad esté asociada con el país correspondiente.

Se puede usar una clave externa para lograr esto:

Clave externa

Si leemos los datos de la tabla de ciudades del ejemplo anterior, podemos ver que cada ciudad tiene un country_id. asociado. Esto le permitirá buscar todas las ciudades de Pakistán con una sola consulta.

Al crear claves externas, podemos especificar qué debe suceder si los datos se modifican o destruyen. Por ejemplo, podemos elegir la cascada, lo que significa que si se elimina un país, también se eliminan todas las ciudades vinculadas a él.

También podemos establecer nulo, lo que significa que cuando se eliminan los datos en la base de datos del país, las ciudades vinculadas se establecen en nulo.

Referencias MongoDB

Por lo general, MongoDB no funciona con el concepto de claves externas. Sin embargo, las bases de datos relacionales pueden usar claves foráneas para visualizar datos de múltiples colecciones simultáneamente.

La forma en que MongoDB almacena datos también es diferente. Por ejemplo, MongoDB usa colecciones, objetos y campos en lugar de usar tablas, columnas y filas.

MongoDB ofrece dos formas diferentes de almacenar datos en colecciones: desnormalización y normalización.

desnormalización

En la desnormalización, la misma colección contiene una variedad de datos.

El siguiente ejemplo demuestra cómo las direcciones vinculadas con cada persona se han integrado en la colección de personas.

> db.persons.findOne()
{
    name: 'Ali Ikram',
    addresses : [
        { street: '123 PWD', city: 'Rawalpindi', cc: 'PAK' },
        { street: '123 ABC', city: 'Faisalabad', cc: 'PAK' }
    ]
}

Es adecuado para uno a pocos. Su ventaja es que no es necesario realizar consultas adicionales a otro documento.

Sin embargo, no puede gestionar la entidad de los documentos incrustados individualmente.

Normalización

En la normalización, diferentes datos se almacenan en varias colecciones. El proceso es similar al almacenamiento de datos en bases de datos relacionales, pero en lugar de tablas, usamos colecciones.

En MongoDB, las referencias se utilizan principalmente para el proceso de normalización. Las referencias de la tabla de niños (generalmente un ID de objeto) se incrustan en la tabla principal.

Al leer la información, el usuario tiene que realizar varias consultas para recuperar datos de múltiples colecciones.

Por ejemplo, tomaremos las siguientes dos colecciones, estudiantes y cursos. Un curso contendrá muchos estudiantes a los que se hace referencia en la colección de cursos.

Puede definir la llamada clave externa en MongoDB. Sin embargo, debe mantener la integridad de los datos POR USTED MISMO.

Ejemplo:

students
{
    _id: ObjectId(...),
    name: 'Haris',
    courses: ['chem101', 'chem102']   // <= ids of the courses
}

courses
{
    _id: 'chem101',
    name: 'Chemistry 101',
    description: 'Introduction to Chemistry'
}

El campo cursos contiene _id de cursos. Es bastante simple definir una relación de uno a muchos.

Sin embargo, si desea recuperar los nombres de los cursos del estudiante Haris,, deberá realizar otra operación para recuperar el documento cursos a través de _id..

Si se elimina el curso chem101, debemos realizar otra operación para actualizar el campo cursos en el documento estudiantes.

Crear claves foráneas virtuales en MongoDB

DbSchema guarda la imagen local del esquema en el archivo del modelo. Esto significa que puede trabajar en el proyecto sin conexión sin necesidad de conectarse a la base de datos.

Después de volver a conectarse, puede comparar y sincronizar las diferencias entre la base de datos y su archivo de proyecto local. También puede construir relaciones de clave externa virtual con un archivo de proyecto.

Estas claves externas solo se pueden usar en DbSchema y no afectan la base de datos.

Las llaves foráneas se pueden hacer rápida y fácilmente. Tome las colecciones de ciudades y países, por ejemplo. Para su referencia, ambos tendrán un campo común llamado “id del país”.

Clave externa 2

Arrastre y suelte una columna sobre la otra para crear una clave externa. Esto creará una nueva ventana donde puede dar una descripción a la clave externa y agregar campos adicionales.

Use claves foráneas virtuales para una navegación de datos más rápida en MongoDB

Puede navegar por los datos de sus colecciones utilizando la clave externa virtual. Además, el Editor de datos relacionales le permite buscar simultáneamente datos de muchas colecciones.

Puede navegar rápidamente por las ciudades conectadas con los países utilizando la clave externa.

Conclusión

Con la ayuda de este artículo del tutorial de MongoDB, aprendió a visualizar su colección de MongoDB como diagramas y crear claves externas virtuales con DbSchema. Ahora también debería poder buscar datos de diferentes colecciones simultáneamente.

Además, las claves foráneas virtuales solo se almacenarán en el archivo del proyecto local y no afectarán a la base de datos.

Artículo relacionado - MongoDB Database