sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Claves foráneas en mongo?

¿Cómo diseñar una tabla como esta en mongodb?

En primer lugar, aclarar algunas convenciones de nomenclatura. MongoDB usa collections en lugar de tables .

¡Creo que no hay claves foráneas!

Toma el siguiente modelo:

student
{ 
  _id: ObjectId(...),
  name: 'Jane',
  courses: [
    { course: 'bio101', mark: 85 },
    { course: 'chem101', mark: 89 }
  ]
}

course
{
  _id: 'bio101',
  name: 'Biology 101',
  description: 'Introduction to biology'
}

Claramente, la lista de cursos de Jane apunta a algunos cursos específicos. La base de datos no aplica ninguna restricción al sistema (es decir, restricciones de clave externa ), por lo que no hay "eliminaciones en cascada" ni "actualizaciones en cascada". Sin embargo, la base de datos contiene la información correcta.

Además, MongoDB cuenta con un estándar DBRef que ayuda a estandarizar la creación de estas referencias. De hecho, si echas un vistazo a ese enlace, tiene un ejemplo similar.

¿Cómo puedo resolver esta tarea?

Para ser claros, MongoDB no es relacional. No existe una "forma normal" estándar. Debe modelar su base de datos de acuerdo con los datos que almacena y las consultas que pretende ejecutar.