Vous êtes sur la page 1sur 36

Big Data

Informatique pour les données et calculs massifs et distribués

Dr. SAGAR Samya


Correction des Exercices Bases
de données NoSql

2 SAGAR Samya
TD n°1 – MODÈLES

3 SAGAR Samya
Énoncé
On souhaite réaliser une base de données orientée documents pour gérer des
cours et des étudiants, étant données les informations suivantes :
 Un cours est décrit par les attributs code, titre, description, crédits et prérequis.
 Les prérequis sont d'autres cours.
 Un étudiant est décrit par les attributs nom, prénom, adresse.
 Les adresses sont composées d'un numéro de rue, d'une rue, d'une ville et d'un code
postal.
 Un étudiant suit plusieurs cours et les cours sont suivis par plusieurs étudiants.

4 SAGAR Samya
Solution
1. Réaliser le Diagramme de classe en UML de ce problème.

5 SAGAR Samya
Solution
1. Réaliser le Diagramme de classe en UML de ce problème.

6 SAGAR Samya
Solution
2. Proposer un exemple JSON équivalent à ce que l'on aurait fait en relationnel normalisé (sachant que ce type de
solution ne sera généralement pas favorisé en BD orientée document).

7 SAGAR Samya
Cours
{
"code":"api04",
Solution "titre":"DW et NOSQL",
"description":"......",
2. Proposer un exemple JSON "credits":4
}
équivalent à ce que l'on aurait fait en Prérequis
relationnel normalisé (sachant que ce {
type de solution ne sera code:"api04",
requis:"api05"
généralement pas favorisé en BD }
orientée document). Etudiant
{
"num":1,
"nom":"Dupont",
"prenom":"Jean"
}
Adresse
{
"etudiant":1,
"num":8,
"rue":"Gury"
}
Suit
{
"etudiant":1,
"cours":"api04"
8 SAGAR Samya
}
Solution
3. Proposer un exemple JSON basé sur l'imbrication.

9 SAGAR Samya
{
"code":"api04",
"titre":"DW et NOSQL",
Solution "description":"......",
"credits":4
"prerequis":
3. Proposer un exemple JSON basé sur [
l'imbrication. {
"code":"api05",
"titre":"DW et NOSQL, volume II",
"description":"......",
Solution favorisant Cours "credits":4
"prerequis": [...]
},
...
]
"etudiants":
[
{
"nom":"Dupont",
"prenom":"Jean",
"adresse":
{
"num":8,
"rue":"Gury"
}
},
...
]
}

 Il existe une autre solution favorisant Etudiant.


10 SAGAR Samya
Solution
3. Proposer un exemple JSON basé sur l'imbrication. Quel est le principal défaut de cette solution ? Est-il toujours
possible d'avoir une solution ne reposant que sur l'imbrication ?

Le principal défaut de cette solution est sa redondance :


- toutes les données de tous les étudiants sont copiées dans chaque cours ;
- tous les cours sont copiés à chaque fois qu'ils sont prérequis d'un autre cours.

Si l'on avait un cycle de référence, par exemple deux cours pré-requis l'un de l'autre,
alors on aurait nécessairement besoin d'identification et de références.

11 SAGAR Samya
Solution
4. Proposer un exemple JSON basé sur les références. Quelles sont les principales différences avec un système relationnel ?

12 SAGAR Samya
Cours
Solution {
"_id":"30ae9e51-f5c8-4022-a68d-3f3948dbdcb1",
4. Proposer un exemple "code":"api04",
JSON basé sur les "titre":"DW et NOSQL",
références. "description":"......",
"credits":4,
"prerequis":["a1449020-9b24-44a1-b12d-84ef592f8853","cf936817-19fa-4635-b009-a383c90ab6d7"]
}
Etudiant
{
"_id":"850b1657-a070-4a25-ab63-6f61b436cf9d",
"nom":"Dupont",
"prenom":"Jean",
"cours":["30ae9e51-f5c8-4022-a68d-3f3948dbdcb1","cf936817-19fa-4635-b009-a383c90ab6d7"]
}
Adresse
{
"_id":"7e93be68-7d6e-4506-9be5-ffd78e5afb5d",
"etudiant":"850b1657-a070-4a25-ab63-6f61b436cf9d",
"num":8,
"rue":"Gury"
}

13 SAGAR Samya
Solution
4. Proposer un exemple JSON basé sur les références. Quelles sont les principales différences avec un système relationnel ?

Les principales différences avec le relationnel sont :


- les clés artificielles sont préférées aux clés naturelles ;
- on utilises des identifiants universels pour les clés artificielles ;
- on utilise des tableaux de références pour gérer des références multiples (graphes).

14 SAGAR Samya
Solution
5. Sachant que l'objectif de l'application est de visualiser une liste des étudiants avec les cours que chacun suit, et d'accéder aux
détails des cours uniquement lorsque l'on clique sur son code ou son titre. Proposer une solution adaptée à ce problème
mobilisant référence et imbrication.

15 SAGAR Samya
Etudiant
Solution {
"_id":"850b1657-a070-4a25-ab63-6f61b436cf9d",
"nom":"Dupont",
5. Sachant que l'objectif de
"prenom":"Jean",
l'application est de "adresse":
visualiser une liste des {
étudiants avec les cours "num":8,
que chacun suit, et "rue":"Gury"
d'accéder aux détails des },
cours uniquement lorsque "cours":
l'on clique sur son code ou [
{
son titre. Proposer une
"_id":"30ae9e51-f5c8-4022-a68d-3f3948dbdcb1",
solution adaptée à ce "code":"api04",
problème mobilisant "titre":"DW et NOSQL"
référence et imbrication. },
{
"_id":"cf936817-19fa-4635-b009-a383c90ab6d",
Création de deux collections : "code":"api05",
Etudiant et Cours "titre":"DW et NOSQL, la suite"
}
]
}
16 SAGAR Samya
Solution
5. Sachant que l'objectif de
l'application est de
visualiser une liste des Cours
étudiants avec les cours {
que chacun suit, et "_id":"30ae9e51-f5c8-4022-a68d-3f3948dbdcb1",
d'accéder aux détails des "code":"api04",
cours uniquement lorsque "titre":"DW et NOSQL",
"description":"......",
l'on clique sur son code ou
"credits":4,
son titre. Proposer une "prerequis":
solution adaptée à ce [
problème mobilisant {
référence et imbrication. "_id":"a1449020-9b24-44a1-b12d-84ef592f8853",
"code":"api03"
}
Création de deux collections : ]
Etudiant et Cours }

17 SAGAR Samya
TD n°2 – MODÈLES NOSQL

18 SAGAR Samya
Énoncé
 Soit la base de données relationnelle représentant les visites dans un centre médical dont
des extensions de ses tables sont décrites ci-dessous. Les valeurs des attributs
id_médecin, id_ordonnance et id_médicament sont uniques, et sont les clés
primaires des tables.

Médecin Médicament
Id_médecin Nom Prénom Id_médicament Libellé Prise Id_ordonance
M11 Yaccoub Chahin Me11 Doliprane1000 3 Or11
M22 Toumi Meryem Me22 Paragrippe 3 Or22
M33 Abdallah Ali Me33 VitaC 3 Or33

Ordonnance
Id_ordonnance Date Patient Id_médecin
Or11 01-10-2023 Mohamed M11
Or22 10-10-2023 Sonia M22
Or33 02-09-2022 Hela M33

Objectif : migration de BDR à une base de données NoSQL.


19 SAGAR Samya
Solution
1. Donner le diagramme UML modélisant cette base sachant qu’une ordonnance est délivrée par un seul médecin
et qu’un médicament n’est prescrit que dans une seule ordonnance.

20 SAGAR Samya
Solution
1. Donner le diagramme UML modélisant cette base sachant qu’une ordonnance est délivrée par un seul médecin
et qu’un médicament n’est prescrit que dans une seule ordonnance.

Médecin Ordonnance Médicament

- Id_médecin - Id_ ordonnance - Id_médicament


1 1..* 1 1..*
- Nom - Date - Libellé
- Prénom - Patient - Prise

21 SAGAR Samya
Solution
2. Proposer une modélisation orientée clé-valeur permettant, pour une ordonnance donnée de connaitre tous ses
détails.

22 SAGAR Samya
Solution
2. Proposer une modélisation orientée clé-valeur permettant, pour une ordonnance donnée de connaitre tous ses
détails.
Clé(Id_ordonnance) Valeur(document JSON)

23 SAGAR Samya
Solution
2. Proposer une modélisation orientée clé-valeur permettant, pour une ordonnance donnée de connaitre tous ses
détails.
Clé(Id_ordonnance) Valeur(document JSON)
"{
"date":01-10-2023,
"patient" : "Mohamed",
"médecin": {
"id_médecin":"M11",
"nom":"Yaccoub",
"prénom":"Chahin"
},
Or11 "médicament": [
{
"id_médicament":"Me11",
"libellé":"Doliprane100",
"prise":3
}
]
}"
24 SAGAR Samya
Solution
3. Proposer une modélisation orientée colonne permettant d’accéder aux ordonnances d’un médecin.

25 SAGAR Samya
Solution
3. Proposer une modélisation orientée colonne permettant d’accéder aux ordonnances d’un médecin.
 Pour éviter la jointure le nom et prénom du médecin seront stockés dans la table Ordonnance.

26 SAGAR Samya
Solution
3. Proposer une modélisation orientée colonne permettant d’accéder aux ordonnances d’un médecin.
 Pour éviter la jointure le nom et prénom du médecin seront stockés dans la table Ordonnance.

ColumnFamily
Key Value
Key(Id_ordonnance) Value(of the row)
Column
Name Value
Or11 date 01-10-2023
patient Mohamed
nom Yaccoub
Ordonnance
prénom Chahin
Column
Or22
Name Value
date 10-10-2023
patient Sonia
nom Toumi
27 prénomSAGAR Samya Meryem
Solution
4. Proposer trois modélisations orientées document de ces informations :
a. Centrée sur les médicaments.

28 SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
a. Centrée sur les médicaments.

Tout peut être représenté par un


unique document structuré, en tirant
parti de l’imbrication d’objets dans des
tableaux. Nous obtenons une unité
d’information autonome représentant
l’ensemble des informations
relatives à un médicament.

29 SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
a. Centrée sur les médicaments.
{
"id_médicament": "Me11",
"libellé":"Doliprane100",
Tout peut être représenté par un "prise":3,
"ordonnance": {
unique document structuré, en tirant
"id_ordonnance ":"Or11",
parti de l’imbrication d’objets dans des "date":01-10-2023,
tableaux. Nous obtenons une unité "Patient" : "Mohamed",
d’information autonome représentant "Médecin": {
l’ensemble des informations "id_médecin":"M11",
relatives à un médicament. "nom":"Yaccoub",
"prénom":"Chahin"
}
}
}

30 SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
b. Centrée sur les ordonnances.

31 SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
b. Centrée sur les ordonnances.
{
"id_ordonnance ":"Or11",
"date":01-10-2023,
"patient" : "Mohamed",
"Médecin": {
"id_médecin":"M11",
"nom":"Yaccoub",
"prénom":"Chahin"
},
"Médicament": [
{
"id_médicament":"Me11",
"libellé":"Doliprane100",
"prise":3
}
]
32 } SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
c. Centrée sur les médecins.

33 SAGAR Samya
Solution
4. Proposer trois modélisations orientées document de ces informations :
c. Centrée sur les médecins. {
"id_médecin":"M11",
"nom":"Yaccoub",
"prénom":"Chahin",
"ordonnance": [
{
"id_ordonnance ":"Or11",
"date":01-10-2023,
"Patient" : "Mohamed",
"Médicament": [
{
"id_médicament":"Me11",
"libellé":"Doliprane100",
"prise":3
}
]
}
34
] SAGAR Samya
}
Solution
3. Expliquer les modifications nécessaires pour gérer plusieurs médicaments par ordonnance :
a. Dans la base de données relationnelle.
b. Dans les différents documents structurés.

35 SAGAR Samya
Solution
3. Expliquer les modifications nécessaires pour gérer plusieurs médicaments par ordonnance :
a. Dans la base de données relationnelle.
Ajout de table de jointure dans le schéma relationnel
Médecin(id_médecin, nom, prénom)
Ordonnance (id_ordonnance, date, patient, #id_médecin)
Médicament(id_médicament, libellé)
Prescrit(#id_ordonnance, #id_médicament, prise)

b. Dans les différents documents structurés.


- Centrée sur les médecins ou bien sur les ordonnances : pas de changement.
- Centrée sur les médicaments : la clé ordonnance aura type tableau des ordonnances.

36 SAGAR Samya

Vous aimerez peut-être aussi