R EPUBLIQUE TUNISIENNE Section : Sciences de l’Informatique
M INISTERE DE L ' EDUCATION
LYCEE M OUROUJ 6 EPREUVE THEORIQUE DE
*** B ASE DE DONNEES
CORRECTION SUJET DE REVISION Date : Avril 2008
N°05 Durée : 2 h – Coefficient:1.5
BAC SESSION 2008 Prof. Jamel TALBI
Le sujet comporte trois pages numérotés de 1/3 à 3/3
Partie I (6 pts)
Exercice n°1 (3pts)
1) Décrire brièvement l'importance de notion de la sécurité dans une base de données
ainsi que les mécanismes nécessaires pour l'assurer.
La sécurité d'une base de données est un concept primordial qui maintient la
cohérence, la confidentialité, et la maintenance des données. Plusieurs mécanismes
permettent d'assurer la sécurité de la base comme l'authentification, l'attribution
des droits et privilèges, les logs et traces, tolérance aux pannes, sauvegardes et
restauration et les mécanismes transactionnels.
2) "Manipuler une base de données est un affaire des informaticiens…" est ce que cette
citation est correct à ton avis? Expliquer.
A mon avis, la manipulation d'une base de données est devenu aujourd'hui à la
porté des tous les utilisateurs vu que la plupart des SGBD modernes fournissent des
interfaces graphiques qui facilitent beaucoup la tâche de créer une base de
données et de manipuler et interroger ses données. Toutefois, quelques
manipulations nécessitent une connaissance du langage SQL.
Exercice n°2 (3pts)
Pour chacune de ces propositions, cocher la (ou les) bonne(s) réponse(s).
Une clé étrangère est :
Une ou plusieurs colonnes d’une table qui fait référence à une clé primaire
d’une autre table
Une colonne unique d’une table qui fait référence à une clé primaire d’une
autre table
Une propriété dans la table fille
le principe du model relationnel consiste à :
Représenter les données dans une structure arborescente
Représenter les données et les liens par des tables
Représenter les données dans un fichier
La description des attributs se fait par :
LDD
LMD
LDA
Est-ce qu’il s’agit d’un nom de SGBD
Page 1 sur 4
Access
Excel
MySQL
Une colonne correspond toujours à :
Une clé primaire
Une catégorie d’information, une propriété
Cellule
Une zone sur laquelle je peux cliquer pour se déplacer dans la base de
données
Partie II (14 pts)
La représentation graphique d'une base de données de formation est la s uivante:
Solutions
1. SELECT nom, prenom
FROM animateurs;
2. SELECT *
FROM participants
3. SELECT DISTNCT droit_inscrip;
FROM cours
ORDER BY droit_inscrip DESC;
4. SELECT DISTINCT date
FROM cours
ORDER BY date;
5. SELECT code_entreprise, nom, prenom
FROM participants
WHERE code_entreprise = '33336';
6. SELECT code_cours, date, code_theme
FROM cours
Page 2 sur 4
WHERE date = '1998-01-22';
7. SELECT matricule_animateur, date
FROM cours
WHERE date BETWEEN '1998-01-01' AND '1998-01-31';
8. SELECT code_cours, date
FROM cours
WHERE date = '1998-03-08' OR date = '98-09-10'
9. SELECT code_cours, droit_inscrip, prime_resp
FROM cours
WHERE droit_inscrip < 6000 AND prime_resp >1000;
10. SELECT *
FROM themes;
11. SELECT code_cours
FROM cours
WHERE droit_inscrip BETWEEN 2500 AND 6000;
12. SELECT nom, prenom
FROM participants
WHERE nom LIKE 'N%';
13. SELECT nom, prenom
FROM participants
WHERE nom LIKE '%N'
ORDER BY nom, prenom;
14. SELECT nom, prenom
FROM participants
WHERE nom LIKE '_CH%';
15. SELECT nom, prenom
FROM participants
WHERE matricule LIKE '1968%';
16. SELECT COUNT(*) 'nombre de participants nés en 98'
FROM participants
WHERE matricule LIKE '1968%';
17. SELECT COUNT(*) 'nombre total de cours'
FROM cours;
18. SELECT COUNT(*) 'nombre total de participants'
FROM participer;
19. SELECT COUNT(*) 'nombre participants au cours 026'
FROM participer
WHERE code_cours = '026';
20. SELECT AVG(droit_inscip) 'droit d’inscription moyen',
AVG(prime_resp) 'prime de responsabilité moyenne',
AVG(tarif_hr) 'tarif heur moyen'
FROM cours;
21. SELECT niveau, COUNT(*) 'nombre de cours'
FROM cours
Page 3 sur 4
GROUP BY niveau;
22. SELECT code_cours
FROM cours
WHERE droit_inscrip = (SELECT MAX(droit_inscrip)
FROM cours);
23. SELECT code_cours
FROM cours
WHERE droit_inscrip = (SELECT MIN(droit_inscrip)
FROM cours);
24. SELECT SUM(nbre_heures) 'total des heures prestées'
FROM animer;
25. SELECT SUM(nbre_heures) 'total des heures prestées pour le cours 005'
FROM animer
WHERE code_cours = '005';
26. SELECT SUM(nbre_heures)
AS 'total des heures prestées par l’animateur 19800202222'
FROM animer
WHERE matriucle_animateur = '19800202222';
27. SELECT matricule_animateur, SUM(nbre_heures)
'nombre total d'heures prestées'
FROM animer
GROUP BY matricule_animateur
ORDER BY matricule_animateur ;
28. SELECT code_entreprise, COUNT(*) 'nombre de participants'
FROM participants
GROUP BY code_entreprise;
29. SELECT matricule_animateur, SUM(nbre_heures) 'nombre d'heures prestées'
FROM animer
GROUP BY matricule_animateur
HAVING SUM(nbre_heures) >10;
30. SELECT matricule_animateur, SUM(nbre_heures) 'nombre d'heures prestées'
FROM animer
WHERE matricule_animateur like '1968%'
GROUP BY matricule_animateur
HAVING SUM(nbre_heures) >10;
31. SELECT code_cours, nom, prenom
FROM animateurs, cours
WHERE animateurs.matricule_animateur = cours.matricule_animateur;
32. SELECT code_cours, designation, nom, prénom
FROM animateurs , themes, cours
WHERE themes.code_thème = cours.code_theme
AND animateurs.matricule_animateur = cours.matricule_animateur;
Page 4 sur 4