Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 : Temps estimé (45 mn à 50 mn ) barème : 11.5 pts (-0.25 sur chaque erreur, rajout ou syntaxe
incorrecte)
Soit le schéma SQL3 d’une base de données RO qui gère l’ensemble des auto-écoles. Donnez les requêtes
suivantes :
3. Ajouter la voiture '1234-119-13', modèle ‘Peugeot’ année ‘2019’ pour auto-école ’Amane’ . 1.5 pt
update lesautoecole
set voitures = EnsVoitures(Voiture('138653-119-13', 'peugeot', 2019))
where NomAuto = 'Amane'
Deuxième solution
update lesautoecole
set voitures = EnsVoitures() ;
insert into table (select voiture from AutoEcoles where NomAuto = ‘Amane’)
V values ('138653-119-13', 'peugeot', 2019)
5. Donner le nom des auto-écoles qui ont une monitrice et qui possèdent plus d’une voiture 2 pt
select e.NomAuto
from lesautoecoles e , table(e.voitures) v, table(e.moniteurs) m
where m.Column_Value.sexe = 'F'
group by e.NomAuto
having count(v.matricule) > 1
6. Soit la base relationnelle qui gère les dossiers des candidats et leurs examens 3.5 pt
Dossier (NumD, NomCandidat, EtapePermis ) EtapePermis = ‘Code’ ou ‘Créneau’ ou ‘Circuit’. Valeur par
défaut est Code
Examen (NumD*,TypeExm, DateExm, Résultat ) Résultat = ‘Obtenu’ ou ‘Recalé’,
TypeExm prend les mêmes valeurs que EtapePermis
- Donnez le déclencheur qui permet de satisfaire la contrainte suivante: A chaque fois qu’un candidat
obtient un examen, le champ EtapePermis prend la valeur de la prochaine étape. Exp : EtapePermis =
Code et le candidat a obtenu l’examen de Type Code donc EtapePermis = ‘Créneau’
Create or replace trigger T (-0.5 sur chaque erreur, ajout ou syntaxe erronée)
After insert or update of Resultat on Examen
When (:new.resultat = ‘Obtenu’)
For each row
Begin
If :new.TypeExm= ‘Code’ then
Update Dossier set EtapePermis = ‘Créneau’ where NumD= :new.NumD ;
End if ;
If :new.TypeExm= ‘Creneau’ then
Update Dossier set EtapePermis = ‘Circuit’ where NumD= :new.NumD ;
End if ;
End ;
Exercice 2 : Temps estimé ( 35 à 40 mn) barème : 8.5 pts (-0.25 sur chaque erreur, rajout ou syntaxe
incorrecte)
Soit la base Mongodb qui gère l’ensemble des auto-écoles (Dossiers des candidats et leurs examens). Donner les
requêtes qui permettent de :
1. Afficher les candidats qui sont à l’étape de Créneau 1 pt
db.DossiersAuto.find({"EtapePermis":"Créneau"},{"Candidat":1,_id:0})
0.5 pt 0.25 pt 0.25 pt
2. Quelle sont les auto-écoles qui ouvrent toute la semaine (le tableau ne contient pas de doublon) 1 pt
db.AutoEcole.find({JoursOuverture:{$size:7}},{NomAuto:1, _id:0})
Solution avec $ALL acceptée
3. La candidate Karoun Sihem a obtenu son code (1er Elément du tableau Examens), et elle passe à l’étape
créneau. Faites les modifications nécessaires. 1.5 pt
0.25 pt 0.25 pt
db. DossiersAuto.update({ "Candidat" : "Karoun Sihem"},
{$set:{"Examens.0.Resulat" : "Obtenu", "EtapePermis" : "Créneau"}})
0.25 pt 0.25 pt 0.25 pt 0.25 pt
4. Donner pour chaque auto-école un tableau de ses candidats, sauvegarder le résultat dans une collection
nommée CandidatsAuto. 2pts
0.25 pt 0.25 pt 0.25 pt 0.25 pt 0.25 pt
db.DossiersAuto.aggregate([{$group:{_id:"$AutoEcole",Candidats:{$push:"$Ca
0.25 pt
ndidat"}}},{$out:"CandidatsAuto"}])
0.25 pt 0.25 pt
1. Donnez la sémantique avec résultat de la requête suivante : 1.5 pt
db.DossiersAuto.aggregate([{$unwind:"$Examens"},{$group:{_id:{resultat:"$Ex
amens.Resultat",Candidat:"$Candidat"},Nombre:{$sum:1}}},
{$match:{Nombre:{$gt:1}}}])
Sémantique : Les candidats qui ont obtenu ou ont été recalés plus d’une
fois Une sémantique et non l’explication des opérateurs !!
Résultat :candidat Diab Zoheir, recalé 2 fois
{
"_id" : {
"resultat" : "Recalé",
"Candidat" : "Diab Zohir"
},
"Nombre" : 2.0
}
2. Donner le résultat (aperçu d’un document affiché) de cette requête 1.5 pts
db.AutoEcole.aggregate(
[{$project:{NomAuto:1,Responsable:1,_id:0}},
{$lookup:
{ from: "DossiersAuto",
localField: "NomAuto",
foreignField: "AutoEcole",
as: "Dossiers"}},
{$unset:["Dossiers.AutoEcole","Dossiers.Examens","Dossiers._id"]}])
Résultat
Document 1
{
"NomAuto" : "ElMansourah",
"Responsable" : "Chibani Djamila",
"Dossiers" : [
{ "NumDossier" : 30,
"Candidat" : "Diab Zohir",
"EtapePermis" : "Créneau"
}
]
}
Document 2
{
"NomAuto" : "Amane",
"Responsable" : "Sahi Redouane",
"Dossiers" : [
{
"NumDossier" : 154,
"Candidat" : "Bensaid Fayssel",
"EtapePermis" : "Créneau"
},
{
"NumDossier" : 155,
"Candidat" : "Karoun Sihem",
"EtapePermis" : "Créneau"
}
]
}