Vous êtes sur la page 1sur 6

Cours : BDD avancées Département d’Informatique

(2019/2020) Responsable : a.HALFAOUI

Examen final (Durée 1h00)

Remarques : La note du Contrôle : QCM+ Meilleure note entre Exercice1 et Exercice2


La note du Test TP : Exercice 1 + Exercice 2
Les notes obtenues vont être pondérées sur 20

Exercice 1 : Temps estimé (20 à 25 mn) barème : 7pts : ((1,25pts * 4) Déclencheur (2pts)
Soit le schéma SQL3 d’une base de données RO qui gère la liste des entraineurs des différentes
équipes sportives. Donnez les requêtes suivantes
1. Créer les tables Entraineurs et Equipes.
Nous supposons, pour le reste de l’exercice que la table Entraineurs contient déjà l’entraineur
(1,'Bernard Casoni','4/09/1961','Français')
2. Insérer l’équipe ‘Mouloudia d'Alger’ qui contient l'entraineur Bernard Casoni, ce dernier
a entrainé l’équipe pendant 7 mois à partir du ‘’1/2/2017’’.
3. Modifier la durée de l’entraineur Bernard Casoni à 6 mois pour l’équipe ‘Mouloudia D’alger’
4. Quel est l’équipe qui a eu, au moins, un entraineur étranger.
5. Soit le schéma relationnel pour la gestion des équipes et leurs joueurs.
Joueur (NumJ , Nom, Age, NumE*)
Equipe (NumE, NomEq , NbJoueurs)
Donner le trigger qui met à jours après chaque modification le champ NbJoueurs

Exercice 2 : Temps estimé (15 à 20 mn) barème : 7pts


Soit le schéma Mongodb qui gère les rencontres entre différentes équipes sportives. La base contient
la collection ‘Equipe’ et la collection ‘Rencontres’
1. Quelle est la différence entre le champ _id de la collection Equipes et la collection
Rencontres ? (1 pt)
2. Afficher les joueurs de l’équipe “Mouloudia Club d’alger”. (1 pt)
3. Enlever l’entraineur "Bernard Casoni" de l’équipe Mouloudia Club d’alger (1 pts)
4. Donner les rencontres par Stade. (2 pts)
Le résultat d’exécution de la requête sur la base sera :
/* 1 */
{ "_id" : "5-Juillet-1962",
"rencontres" : [ { "equipe" : "JSK",
"equipe_Rencontrée" : "Mouloudia Club d'alger"
} ]
}

/* 2 */
{
"_id" : "3 Frères Zerga",
"rencontres" : [ { "Equipe" : "WAT",
"EquipeRencontrée" : "Mouloudia Club d'alger"
} ]
}

5. On voudrait rajouter aux documents de la collection ‘Rencontres’ les informations de


chaque équipe dans le champ ‘Information_Equipe’. Sauvegarder le résultat dans une
nouvelle collection nommée ‘RencontresEquipe’. Donnez la requête adéquate (2 pts)
1 - Schéma de l’exercice 1 : 2- Base de l’exercice 2 :

Schéma SQL : Base Entraineurs équipes Collection : Rencontres


CREATE TYPE Entraineur_Typ AS OBJECT( {"_id" : 1,
Num number, "Equipe" : "Mouloudia Club d'alger",
Nom varchar(30), "Joueurs" : [
Date_Naissance date, {
Nationalité varchar (25) "nom" : "Farid Chaâl",
); "Date_Naissance" : "03/07/1994"
},
CREATE TYPE EntraineurEq_Typ AS OBJECT ( {
Entraineur ref Entraineur_Typ, "nom" : "Ahmed Boutagga",
Date_Debut date, "Date_Naissance" : "18/12/1997 "
Durée number /*durée d’entrainement en },
mois*/ {
); "nom" : "Zidane Mebarakou",
"Date_Naissance" : "03/01/1989 "
CREATE TYPE Ens_EntraineurEq AS TABLE }
OF EntraineurEq_Typ; ],
"Capitaine" : "Zidane Mebarakou",
CREATE TYPE Equipe_Typ AS OBJECT ( "Rencontres " : [
nom varchar2(30), {"Equipe" : "WAT",
ListeEntraineurs Ens_EntraineurEq "Date_Rencontre" : "14/03/2018",
) "State" : "3 Frères Zerga"
},

{"Equipe" : "JSK",
"Date_Rencontre" : "09/04/2019",
"State" : "5-Juillet-1962"
}

]
}

Collection : Equipes
{ "_id" :ObjectId("5f6e599bd0100c29e778999
4"),
"Equipe" : "Mouloudia Club d'alger",
"Acronyme" : "MCA",
"date_Fondation" : "7/08/1921",
"Entraineurs" : ["Bernard Casoni",
"Adel Amrouche" ]
}
Nom et Prénom : Note : /6

Questions : Donner la ou les bonnes réponses Temps estimé (10 à 15 mn) barème : 6 pts

1. Parmi les possibilités de modélisation logique


suivantes, lesquelles peuvent être réalisées en 7. MongoDB est un SGBDNR orienté :
relationnel-objet mais pas en relationnel.  Graphe
 Associer des méthodes aux tables  Document
 Mettre plusieurs valeurs dans un  Clé valeur
enregistrement  Colonne
 Référencer un enregistrement depuis un autre
enregistrement 8. Quels SGBD sont basés sur le schéma
 Définir ses propres types de données orienté Graphe.
 HBase
2. Il est possible d’interroger une table sur  MongoDB
laquelle est défini un déclencheur global  Neo4j
AFTER INSERT
 Vrai 9. Un trigger s’exécute coté
 Faux  Serveur
 Client
3. Quelles affirmations sont correctes :  Les deux
 Les bases non Relationnelles sont adaptées
pour les structures de données normalisées 10.Pour sauvegarder une base de données
 Les bases de données NoSQL permettent mongo, on utilise :
l’insertion de données sans schéma prédéfini  mongoimport
 Les bases relationnelles sont adaptées pour les  mongodump
données big data  mongorestore

4. Object_Id dans MongoDB est similaire dans le 11. Cocher la requête qui permet de comptabiliser le
relationnel à une : nombre de documents d'une collection
 Clé primaire  db.nomcollection.distinct("_id").count()
 Clé secondaire  db.nomcollection.distinct("_id").length
 _id  db.nomcollection.aggregate([{ $group: {
"_id": null, "nb": { $sum: 1 }}}])
5. Les concepts (collection et document) dans  db.nomcollection.aggregate([{ $project: {
MongoDB sont équivalents respectivement "_id": null, "nb": { $sum: 1 }}}])
aux concepts SQL
 Table et ligne 12. Quels sont les alternatives utilisées dans une
 Table et Colonne modélisation d’une base mongodb
 Base de données et table  Par désimbrication
 Aucune des réponses  Par référence
 Les deux
6. Plusieurs triggers peuvent être associés à une  Aucune
même table
 Vrai
 Faux
Cours : BDD avancées Département d’Informatique
Promo : RSD-GL (2019/2020) Responsable : a.HALFAOUI

Corrigé Examen final (Durée 1h00)

Remarques : La note du Contrôle : QCM+ Meilleure note entre Exercice1 et Exercice2


La note du Test TP : Exercice 1 + Exercice 2
Les notes obtenues vont être pondérées sur 20
Exercice 1 : Temps estimé (20 à 25 mn) barème : 7pts : ((1,25pts * 4) Déclencheur (2pts)
Soit le schéma SQL3 d’une base de données RO qui gère la liste des entraineurs des différentes
équipes sportives. Donnez les requêtes suivantes
1. Créer les tables Entraineurs et Equipes.
Nous supposons, pour le reste de l’exercice que la table Entraineurs contient déjà l’entraineur
(1,'Bernard Casoni','4/09/1961','Français')

CREATE TABLE Entraineurs of ENTRAINEUR_TYP 0.5


CREATE TABLE Equipes OF EQUIPE_TYP NESTED TABLE ListeEntraineurs STORE
AS TabListEntraineurs; 0.25
0.5

2. Insérer l’équipe ‘Mouloudia d'Alger’ qui contient l'entraineur Bernard Casoni, ce dernier
a entrainé l’équipe pendant 7 mois à partir du ‘’1/2/2017’’.
INSERT INTO equipes VALUES
0.5 0.5
('Mouloudia d''Alger',Ens_EntraineurEq(EntraineurEq_Typ((select ref(e) from entraineurs
e where e.num =1),'1/02/2017',7)))
0.25
3. Modifier la durée de l’entraineur Bernard Casoni à 6 mois pour l’équipe ‘Mouloudia D’alger’
update table (select ListeEntraineurs from equipes e where e.NOM = 'Mouloudia d''Alger'
0.75
) l set l.durée = 6; 0.25
where l.nom = ‘’’bernard casoni’ + 0.25
4. Quel est l’équipe qui a eu, au moins, un entraineur étranger.

select nom, l.Entraineur.nom 0.25


from Equipes e, Table(e.LISTEENTRAINEURS)l 0.25 + 0.5
where l.Entraineur.nationalité <> 'Algérien 0.25

5. Soit le schéma relationnel pour la gestion des équipes et leurs joueurs.


Joueur (NumJ , Nom, Age, NumE*)
Equipe (NumE, NomEq , NbJoueurs)
Donner le trigger qui met à jours après chaque modification le champ NbJoueurs
CREATE OR REPLACE TRIGGER UPDATE_ NbJoueurs
After Update Of NumE On Joueur 0.25
for each row 0.25
BEGIN
Update Equipe Set NbJoueurs = NbJoueurs +1 0.25
where NumE = :new. NumE; 0.5

Update Equipe Set NbJoueurs = NbJoueurs -1 0.25


where NumE = :old. NumE; 0.5
END
Exercice 2 : Temps estimé (15 à 20 mn) barème : 7pts
Soit le schéma Mongodb qui gère les rencontres entre différentes équipes sportives. La base contient
la collection ‘Equipe’ et la collection ‘Rencontres’
1. Quelle est la différence entre le champ _id de la collection Equipes et la collection
Rencontres ? (1 pt) 0.5
0.5
_id de la collection Equipe est généré automatiquement par SGBD et l’autre inséré par
l’utilisateur
2. Afficher les joueurs de l’équipe “Mouloudia Club d’alger”. (1 pt) 0.5
db.equipe_rencontres.find({Equipe: “Mouloudia d’alger”},{Equipe:1,Joueurs:1})
0.5
3. Enlever l’entraineur "Bernard Casoni" de l’équipe Mouloudia Club d’alger (1 pts)

db.equipe_rencontres.update({Equipe:"Mouloudia d'alger"},
{$pull:{" Entraineurs ":" Bernard Casoni "}})

4. Donner les rencontres par Stade. (2 pts)


0.5 0.5
db.Rencontre.aggregate([{$unwind:"$Rencontres "},{$group:{_id:"$Rencontres .Stade",
rencontres:{$push:{equipe:"$Rencontres .Equipe", equipe2: "$Equipe"}}}}])
0.5 0.25 0.25
5. On voudrait rajouter aux documents de la collection ‘Rencontres’ les informations de
chaque équipe dans le champ ‘Information_Equipe’. Sauvegarder le résultat dans une
nouvelle collection nommée ‘RencontresEquipe’. Donnez la requête adéquate (2 pts)

db.Rencontre.aggregate([{$lookup:
{ from: "Equipes", Chaque erreur -0.25
localField: "Equipe",
foreignField: "Equipe",
as: "Information_Equipe"}},
{"$out" : "RencontresEquipe"}
])
Nom et Prénom : Note : /6

Questions : Donner la ou les bonnes réponses Temps estimé (10 à 15 mn) barème : 6 pts

1. Parmi les possibilités de modélisation logique


suivantes, lesquelles peuvent être réalisées en 7. MongoDB est un SGBDNR orienté :
relationnel-objet mais pas en relationnel.  Graphe
 Associer des méthodes aux tables 0.25  Document 0.5
 Mettre plusieurs valeurs dans un  Clé valeur
enregistrement  Colonne
 Référencer un enregistrement depuis un autre
enregistrement 8. Quels SGBD sont basés sur le schéma
 Définir ses propres types de données 0.25 orienté Graphe.
 HBase
2. Il est possible d’interroger une table sur  MongoDB
laquelle est défini un déclencheur global  Neo4j 0.5
AFTER INSERT
 Vrai 0.5 9. Un trigger s’exécute coté
 Faux  Serveur 0.5
 Client
3. Quelles affirmations sont correctes :  Les deux
 Les bases non Relationnelles sont adaptées
pour les structures de données normalisées 10.Pour sauvegarder une base de données
 Les bases de données NoSQL permettent 0.5 mongo, on utilise :
l’insertion de données sans schéma prédéfini  mongoimport
 Les bases relationnelles sont adaptées pour les  mongodump 0.5
données big data  mongorestore

4. Object_Id dans MongoDB est similaire dans le 11. Cocher la requête qui permet de comptabiliser le
relationnel à une : nombre de documents d'une collection
 Clé primaire 0.5  db.nomcollection.distinct("_id").count()
 Clé secondaire  db.nomcollection.distinct("_id").length 0.25
 _id  db.nomcollection.aggregate([{ $group: { 0.25
"_id": null, "nb": { $sum: 1 }}}])
5. Les concepts (collection et document) dans  db.nomcollection.aggregate([{ $project: {
MongoDB sont équivalents respectivement "_id": null, "nb": { $sum: 1 }}}])
aux concepts SQL
 Table et ligne 0.5 12. Quels sont les alternatives utilisées dans une
 Table et Colonne modélisation d’une base mongodb
 Base de données et table  Par désimbrication
 Aucune des réponses  Par référence 0.5
 Les deux
6. Plusieurs triggers peuvent être associés à une  Aucune
même table
 Vrai 0.5
 Faux

Vous aimerez peut-être aussi