Académique Documents
Professionnel Documents
Culture Documents
KINDU - RD.CONGO
Master 1 Informatique
1
Passage de BD Relationnelle vers BD Orientée Document :
Identification des Entités :
● Identifier les entités du modèle relationnel. Chaque entité pourrait être
représentée par une collection dans la base de données orientée document.
Normalisation/Dénormalisation :
● Considérer la normalisation du modèle relationnel. Dans une base de
données orientée document, la dénormalisation est souvent appliquée pour
regrouper des données fréquemment utilisées dans un seul document.
Relation Un-à-Plusieurs :
● Pour les relations un-à-plusieurs dans le modèle relationnel, on peut
incorporer les informations de l'entité "plusieurs" directement dans le
document de l'entité "un".
Relation Plusieurs-à-Plusieurs :
● Pour les relations plusieurs-à-plusieurs, utiliser des tableaux dans les
documents pour représenter les connexions.
Définir les Index :
● Identifier les champs qui seront fréquemment utilisés dans les requêtes et
définir des index sur ces champs pour optimiser les performances.
Champs Dynamiques :
● Les bases de données orientées document permettent des schémas
flexibles. Si les données sont hétérogènes, cela peut simplifier le passage
du modèle relationnel vers le modèle orienté document.
Exemple :
Imaginons une modélisation relationnelle simple pour la gestion d'une bibliothèque avec
trois tables : "Livres", "Auteurs", et "Emprunts". Ensuite, je vais vous montrer comment
cela pourrait être modélisé dans une base de données orientée document.
Modèle Relationnel :
- Livres (ID_Livre, Titre, ID_Auteur, Année_Publication, Quantité_Disponible)
- Auteurs (ID_Auteur, Nom_Auteur, Nationalité)
- Emprunts (ID_Emprunt, ID_Livre, Date_Emprunt, Date_Retour, ID_Utilisateur)
Dans ce modèle, "Livres" stocke les informations sur les livres, "Auteurs" stocke les
informations sur les auteurs, et "Emprunts" stocke les détails des emprunts avec des
références aux livres et aux utilisateurs.
{
"_id": ObjectId("1"),
"titre": "Introduction to Algorithms",
"auteur": {
"id_auteur": ObjectId("101"),
"nom_auteur": "Thomas H. Cormen",
"nationalite": "American"
},
"annee_publication": 1990,
"quantite_disponible": 5,
"emprunts": [
{
"id_emprunt": ObjectId("201"),
"date_emprunt": ISODate("2023-01-15"),
"date_retour": ISODate("2023-02-01"),
"utilisateur": {
"id_utilisateur": ObjectId("301"),
"nom_utilisateur": "John Doe"
}
},
// Autres emprunts...
]
}
Dans cette partie pratique du cours, nous abordons les requêtes de base pour la
manipulation des données en MongoDB.
Nous allons exploiter la méthode CRUD pour CREATE, READ, UPDATE &
DELETE.
Les méthodes ci-dessous sont utilisées pour insérer des documents dans une collection:
Exemple :
db.client.insertOne({
matricule : '003321',
nom : 'KATALA',
prénom : 'Jules',
sexe: 'M'
}) /* création de la collection client et insertion d’un document
Exemple :
db.client.insertMany([
{ matricule : '003322', nom : 'KILOLO', prénom : 'Pierre', sexe: 'M'},
{ matricule : '003323', nom : 'BILENDU', prénom : 'Louise', sexe:
'F'},
{ matricule : '003324', nom : 'KANDONGO', prénom : 'Alliance', sexe:
'F'}
])
Exemple :
db.client.insertMany([
{ matricule : '003326', nom : 'KALUMUNA', prénom : 'Angelo', sexe:
'M'},
{ matricule : '003323', nom : 'KIDINDA', prénom : 'Jeanne', sexe:
'F'},
{ matricule : '003324', nom : 'MBULAYI', prénom : 'Onesime', sexe:
'M'} Cyrille KESIKU : cyrillekesiku@gmail.com 10
]) /* Insertion de 3 documents dans la collection client avec insert()
2. Méthode READ (lecture)
Avec cette méthode on réalise plusieurs opérations de requêtes pour interroger la base de
données.
/*Récupérer le nom, la cuisine et le score dans le sous document grades dont la cuisine et
‘Bakery’
- db.collection.updateOne()
- db.collection.updateMany()
- db.collection.update()
b. db.collection.updateMany()
db.client.updateMany({'sexe':'M'},{$set:{'Home_site':'P
roche de U MAPON'}}) /* On ajoute a tous les homme le
champ Home_sie avec valeur ‘Proche de U MAPON’
c. db.collection.update()
db.client.updateMany({'sexe':'M'},{$set:{'Home_site':'Proche
de U MAPON',sexe: 'Masculin'}}) /* modifier plusieurs champs
d’un document
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
a. db.collection.deleteOne()
db.client.deleteOne({sexe:'Masculin'})/* supprimer le
premier document dont le sexe est ‘Masculin’
b.db.collection.remove()
db.client.remove({sexe:'F'},1) /* supprimer tous les client
de sexe ‘F’
c.db.users.deleteMany()
db.client.deleteMany({sexe:'Masculin'}) /* supprimer tous
les client de sexe ‘Masculin’
1. Opérateurs de comparaisons
17
- $gt : strictement supérieur >
db.resto.find({ "grades.score": {$gt: 10 } })
18
TD
1. Quels sont les détails du restaurant avec le nom "Morris Park Bake Shop"?
2. Pouvez-vous récupérer tous les restaurants situés dans le borough "Bronx"?
3. Quels sont les restaurants qui servent une cuisine de type "Bakery"?
4. Donnez-moi la liste des restaurants ayant le code postal "10462".
5. Quels sont les restaurants ayant obtenu une note "A" dans leurs évaluations?
6. Pouvez-vous me montrer les restaurants avec un score inférieur à 5 dans l'une de
leurs évaluations?
7. Quels sont les restaurants ayant reçu une évaluation après le 1er janvier 2013?
8. Donnez-moi les restaurants qui ont obtenu une note "B" avec un score inférieur à
10 dans l'une de leurs évaluations.
9. Pourriez-vous afficher uniquement le nom et le type de cuisine de chaque
restaurant?
10. Quels sont les restaurants triés par score décroissant dans leurs évaluations?