ventajas tutorial relacional español ejemplos desventajas datos caracteristicas mongodb relational-database rdbms

tutorial - ¿Se puede hacer una base de datos relacional usando MongoDB?



mongodb ventajas y desventajas (3)

Voy a hacer un sistema de gestión de estudiantes utilizando MongoDB. Tendré una mesa para los estudiantes y otra para los registros de asistencia. ¿Puedo tener una llave en la mesa de asistencia para llegar a la mesa de los estudiantes, como se muestra a continuación? ¿Cómo?


La idea detrás de MongoDB es eliminar (o al menos minimizar) los datos relacionales. ¿Ha considerado simplemente incrustar los datos de asistencia directamente en el registro de cada estudiante? Este es en realidad el patrón de diseño preferido para MongoDB y puede resultar en un mejor rendimiento y escalabilidad.

Si realmente necesita datos altamente relacionales y normalizados, es posible que desee reconsiderar el uso de MongoDB.


La respuesta depende de cómo intente utilizar los datos. Realmente tiene 2 opciones, incrustar la tabla de asistencia o vincularla. Más sobre estos enfoques se detalla aquí: http://www.mongodb.org/display/DOCS/Schema+Design

Para el caso de uso común, probablemente incrustaría esta colección en particular, por lo que cada registro de estudiante tendría una tabla de "asistencia" incrustada. Esto funcionaría porque es poco probable que los registros de asistencia se compartan entre los estudiantes, y la recuperación de los datos de asistencia también requerirá la información del estudiante. Recuperar los datos de asistencia sería tan simple como:

db.student.find( { login : "sean" } ) { login : "sean", first : "Sean", last : "Hodges", attendance : [ { class : "Maths", when : Date("2011-09-19T04:00:10.112Z") }, { class : "Science", when : Date("2011-09-20T14:36:06.958Z") } ] }


Sí. No hay reglas duras y rápidas. Debe observar los pros y los contras de incrustar o hacer referencia a los datos. Este video definitivamente ayudará ( https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s ). En su ejemplo, el atributo de número de teléfono debe estar en la misma tabla (en una base de datos de documentos), porque el número de teléfono de una persona rara vez cambia.