2011-11-14 25 views

Respuesta

26

La idea detrás de MongoDB es eliminar (o al menos minimizar) de datos relacionales. ¿Has considerado incluir los datos de asistencia directamente en el registro de cada alumno? Este es realmente el patrón de diseño preferido para MongoDB y puede dar como resultado un mejor rendimiento y escalabilidad.

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

+0

Gracias por su respuesta. Mi instructor me dio este proyecto para hacerlo con MongoDb. Así que buscaré información de algún lugar/alguien (como tú :)) y trataré de hacerlo. Gracias de nuevo. –

+2

Si eres nuevo en MongoDB, hay un tutorial bastante bueno en su sitio web: http://www.mongodb.org/ (solo haz clic en "Pruébalo" y escribe "tutorial" en el intérprete de comandos.) –

+1

@MikeChristensen En este momento, este consejo ya no es válido. Probablemente cambiaron su sitio web. – Kunok

17

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

Para el caso de uso común, probablemente insertaría esta colección en particular, por lo que cada registro de estudiante tendría una tabla de "asistencia" incorporada. Esto funcionaría porque es poco probable que los registros de asistencia se compartan entre los alumnos, y la recuperación de los datos de asistencia también requerirá la información del alumno. 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") } 
    ] 
} 
+0

Gracias, comencé a leer Schema Design. –

0

Sí. No hay reglas duras y rápidas. Debe analizar los pros y los contras de incrustar o referenciar 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 documento), porque el número de teléfono de una persona rara vez cambia.

Cuestiones relacionadas