web-dev-qa-db-fra.com

Peut-on créer une base de données relationnelle en utilisant MongoDB?

Je vais faire un système de gestion des étudiants en utilisant MongoDB. J'aurai une table pour les étudiants et une autre pour les relevés de présence. Puis-je avoir une clé dans la table de présence pour accéder à la table des étudiants, comme illustré ci-dessous? Comment?

diagram of a relational database

20
İlker Dağlı

MongoDB a pour objectif d’éliminer (ou au moins de minimiser) les données relationnelles. Avez-vous envisagé de simplement intégrer les données de présence directement dans le dossier de chaque élève? Il s’agit en fait du modèle de conception préféré pour MongoDB et peut améliorer considérablement les performances et l’évolutivité.

Si vous avez vraiment besoin de données hautement relationnelles et normalisées, vous voudrez peut-être reconsidérer l’utilisation de MongoDB.

32
Mike Christensen

La réponse dépend de la manière dont vous envisagez d'utiliser les données. Vous avez vraiment 2 options, intégrer la table de présence ou la lier. Plus d'informations sur ces approches sont détaillées ici: http://www.mongodb.org/display/DOCS/Schema+Design

Pour le cas d'utilisation courant, vous incorporeriez probablement cette collection particulière, de sorte que chaque enregistrement d'élève aurait un tableau "d'assiduité" incorporé. Cela fonctionnerait, car il est peu probable que les enregistrements de présence soient partagés entre les étudiants, et la récupération des données de présence nécessitera probablement également des informations sur les étudiants. Récupérer les données de présence serait aussi simple que:

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") }
  ]
}
17
seanhodges

Oui. Il n'y a pas de règles strictes. Vous devez examiner les avantages et les inconvénients de l'intégration ou du référencement des données. Cette vidéo va certainement aider ( https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s ). Dans votre exemple, l'attribut de numéro de téléphone doit figurer sur la même table (dans une base de données de documents), car le numéro de téléphone d'une personne change rarement.

0
Prince Owen