Vous êtes sur la page 1sur 7

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET Année scolaire 2023 – 2024

DE LA RECHERCHE SCIENTIFIQUE Ecole : EPGE


INP – HB Niveau : MP
Durée : 2h
DEVOIR DE NIVEAU 1 : BASES DE DONNEES

Avertissement
- Cette épreuve comporte quatre pages numérotées 1/4, 2/4, 3/4 et 4/4
- La plupart des questions sont indépendantes.
- Le barème total est de 20 points.
- Le barème de chaque question est (approximativement) proportionnel à son niveau de difficulté.

EXERCICE 1 : Généralités sur les bases des données (6,5 pts)

Partie 1 : Complète les définitions/affirmations ci-dessous avec l’une des expressions suivantes : Microsoft Access –
langage – dépendance fonctionnelle – type – clefs – normalisation – données – application – base de données relationnelle
– propriétés – clé candidate d'une relation – relations – MySQL – SQL – Oracle Database – table – SGBD – serveurs –
ligne – colonne – domaine – cardinalité – clé primaire d'une relation – clients

Exemple : (13) – données


Les bases de données sont nées à la fin des années 1960 pour combler les lacunes des systèmes de fichiers et faciliter la
gestion qualitative et quantitative des données informatiques. On appelle parfois base de données tout ensemble de données
stocké numériquement et pouvant servir à un ou plusieurs programmes. De manière particulière, une (1) . . . . . . . . permet
d'organiser les données en tableaux à deux dimensions, aussi appelés (2) . . . . . . . . , reliés entre eux par des (3). . . . . . . . .
Chaque case de la (4) . . . . . . . . contient une information atomique et chaque (5) . . . . . . . . de la table correspond à un
objet que l'on veut gérer dans la base de données : une voiture, une personne, une espèce... Toutes les lignes d'une même
table correspondent à des objets du même (6) . . . . . . . . , donc dans une table, on met soit des voitures, soit des personnes,
mais on ne mélange pas les deux. Chaque (7) . . . . . . . . de la table correspond à une propriété des objets qui se trouvent
dans la table ; tous les objets de la table partagent donc les mêmes (8) . . . . . . . . . Chaque colonne de la table est associée
à un (9) . . . . . . . . de valeur fixé a priori, par exemple : entier, texte, booléen... Un (10) . . . . . . . . informatique de données
est utilisé pour décrire et manipuler les schémas et les données d'une base de données. (11) . . . . . . . . est le langage consacré
aux (12) . . . . . . . . relationnels et relationnels-objet. C’est un logiciel qui prend en charge la structuration, le stockage, la
mise à jour et la maintenance d'une base de (13) . . . . . . . . .

Partie 2 : Fais correspondre chaque objectif (14, 15, 16, 17) des SGBD aux différents énoncés afférents (a, b, c, d)

Pour gérer une base de données, il faut utiliser une suite de programmes appelé système de gestion de bases de données.
Des systèmes de gestion de bases de données (SGBD) de très grande taille (de l’ordre du pétaoctet) sont au centre de
nombreux dispositifs de collecte, de stockage et de production d’informations. Les SGBD permettent :

Objectifs Énoncés
(14) de gérer la lecture, a) Plusieurs personnes peuvent avoir besoin d’accéder en même temps aux
l’écriture ou la modification informations contenues dans une base données, ce qui peut parfois poser problème,
des informations de la base notamment lorsqu’il s’agit de modifier la même donnée au même moment.
(15) de gérer les autorisations b) Un utilisateur peut enregistrer les informations le concernant dans une base de
d’accès à la base données afin de les mettre à jour au besoin et au moment opportun.
(16) de gérer les accès c) Les fichiers d’une base de données sont stockés sur des disques durs dans des
concurrents à la base ordinateurs. Pour pallier aux éventuelles pannes matérielles, une même base de
données est dupliquée sur plusieurs ordinateurs. Toutes les copies de la base doivent
être parfaitement synchronisées, et ce le plus rapidement possible.
(17) d’assurer la maintenance d) Un utilisateur peut être autorisé à lire et écrire dans la base de données alors qu’un
de la base autre utilisateur peut n’avoir la possibilité que de de lire les informations.

1/4
Partie 3 : Fais correspondre chaque type de cardinalités (18, 19, 20) à un exemple approprié (e, f, g)
La cardinalité d’une relation est le nombre d’enregistrements qu’elle contient (le nombre de participation d’une entité à une
relation). Le modèle relationnel prévoit trois types de relations entre tables : 1:1, 1:n et n:n. Les relations entre les tables
sont définies dans la colonne partagée.
Types de cardinalité Exemples
(18) Relation n:n e) Par exemple, dans une école secondaire, une classe a plusieurs professeurs et un
professeur est responsable de plusieurs classes : les tables Classes et Professeurs sont
en relation N:N.
(19) Relation 1:1 f) Par exemple, un ministre est à la tête d’un ministère et un ministère ne comporte
qu’un seul ministre : la table Ministères est en relation 1:1 avec la table Ministres.
(20) Relation 1:n g) Par exemple, un internat accueille plusieurs élèves : un seul membre de la table
Internats peut se rapporter à plusieurs membres de la table Élèves.

Partie 4 : Algèbre relationnel et SQL

On considère le schéma relationnel suivant qui représente un extrait de la base de données d’une bibliothèque
scolaire.
- etudiants (matricule, nom, prenoms, e-mail)
- consulter (id, #matricule, #numero, date)
- livres (numero, titre, auteur, prix)
Un étudiant peut consulter plusieurs livres et un livre peut être consulté plusieurs fois par les étudiants.
On donne ci-dessous, différentes requêtes SQL relatives à cette base de données. Indiquez pour chacune d’elles,
l’opérateur ou les opérateurs relationnels mis en œuvre.

N° Requêtes SQL

Req 1 SELECT nom, prenoms FROM etudiants;


Req 2 SELECT * FROM livres WHERE prix=10700;
SELECT matricule, nom, prenoms FROM etudiants WHERE nom LIKE
Req 3
'%ass%';
Req 4 SELECT * FROM etudiants, consulter, livres;
SELECT * FROM livres JOIN consulter ON livres.numero=
Req 5
consulter.numero;
SELECT nom, prenoms, titre, date FROM etudiants, livres, consulter
Req 6 WHERE etudiants.matricule = consulter.matricule AND consulter.numero
= livres.numero;
SELECT nom, prenoms FROM etudiants WHERE matricule NOT IN (SELECT
Req 7
matricule FROM consulter;);

EXERCICE 2 : Interprétation de requêtes SQL (5,5 pts)


On considère la table étudiant, issue d’une base de données d’un établissement d’enseignement supérieur.
etudiant
numero nom prenom ville datenaiss
2022001 DELABIO Melle Paris 2001-09-01
2022002 DELAGENO Pierre Lyon 2004-01-15
2022003 BOUVIER Isabelle 2003-03-31
2022004 DUBOIS Marie Paul Nice 2004-02-24
2022005 DELABIO Jean 2000-05-19
2022006 FAURE Alain Lyon 2001-09-01

2/4
Donnez sous forme de tableau avec un entête, le résultat de chacune des requêtes SQL ci-dessous :
1- SELECT DISTINCT nom AS 'nom étudiant' FROM etudiant;
2- SELECT numero, nom FROM etudiant WHERE numero = 2022007;
3- SELECT nom AS 'nom étudiant', prenom AS 'prénom étudiant' FROM
etudiant WHERE ville LIKE '%i%';
4- SELECT * FROM etudiant WHERE ville = 'Lyon' OR prenom = 'jean' ORDER
BY prenom;
5- SELECT datenaiss AS 'date de naissance' FROM etudiant ORDER BY
datenaiss;
6- SELECT * FROM etudiant LIMIT 3 OFFSET 2 ;
7- SELECT * FROM etudiant WHERE datenaiss <= ALL (SELECT datenaiss FROM
etudiant);
8- SELECT COUNT(ville) AS nombre FROM etudiant WHERE ville IN ("");
9- SELECT * FROM etudiant WHERE datenaiss <= ALL (SELECT datenaiss FROM
etudiant) UNION SELECT * FROM etudiant WHERE datenaiss >= ALL (SELECT
datenaiss FROM etudiant);

EXERCICE 3 : Requêtes de requêtes SQL (7 pts)


On considère les deux tables (Elèves et Professeurs) issues d’une base de données pour la gestion d’un
établissement d’enseignement supérieur.

Elèves Professeurs
id Prenom Nom Classe Age Ville id Titre Prenom Nom Classe Salle
1 Steph ANE MPSI 17 Yamoussoukro 1 Mr Denis DEFAUCHY MPSI D21
2 Marc IMBUT PCSI 18 Abidjan 2 Mr Paul YMERE PCSI A05
3 Jo NID MPSI 19 Bouaké 3 Mme Sylvie DEFOU MP B18
4 Rayan AIR MP 19 Yamoussoukro 4 Mr Georges AITTE PC C15
5 Tom DESAVOIE PCSI 18 Daloa 5 Mme Marie AGE PSI E8
6 Jerry CANE PSI 19 Yamoussoukro
7 Paul AINE MP 19 Abidjan
8 Jean NAIMAR PCSI 18 San pédro
9 Jack OUILLE MPSI 18 Bouaké
10 Sam OURAIL PC 20 Yamoussoukro

Le schéma relationnel relatif à ces deux tables se présente comme suit :


- Eleves(id : Integer, Prenom : Text , Nom : Text, Classe : Text, Age : Integer, Ville : Text)
- Professeurs(id : Integer, Titre : Text, Prenom : Text, Nom : Text, Classe : Text, Salle : Text)

Formuler en SQL les requêtes permettant de :


1) Afficher l’ensemble des âges sans doublons des élèves
2) Afficher les noms et prénoms des élèves de MPSI
3) Afficher l’ensemble des âges sans doublons des élèves de 1° année
4) Afficher la liste des élèves (nom, prénom) qui ont atteint l’âge adulte (18ans)
5) Compter le nombre d’élèves venant de Yamoussoukro
6) Déterminer l’âge moyen de l’ensemble des élèves
7) Afficher la liste des élèves sous la forme de n-uplets (Nom, Prénom, Salle) afin que chaque élève trouve
la salle dans laquelle il doit aller pour voir le professeur associé.

3/4
8) Restreindre cette liste (question précédente) aux élèves de MPSI
9) Afficher la liste des profs ayant des élèves mineurs
10) Afficher la liste des classes et de leurs effectifs
11) Trouver les classes ayant au moins 3 élèves
12) Trouver 3 élèves (nom, prénom) parmi les plus jeunes
13) Etablir le liste des noms, prénoms des élèves, organisée par ordre alphabétique sur les noms d’abord, sur
les prénoms ensuite
14) Trouver le second élève (nom, prénom) de la liste triée par ordre alphabétique obtenue précédemment

4/4
CORRECTION DU DEVOIR DE NIVEAU

EXERCICE 1 :
Partie 1

(1) base de données relationnelle / (2) relations / (3) clefs / (4) table / (5) ligne / (6) type / (7) colonne
(8) propriétés / (9) domaine / (10) langage / (11) SQL / (12) SGBD / (13) données

Partie 2
(14) – b) / (15) – d) / (16) – a) / (17) – c)

Partie 3
(18) – e) / (19) – f) / (20) – g)

Partie 4
Req1 : projection.
Req2 : restriction (selection)
Req3 : projection et restriction (selection)
Req4 : produit cartésien
Req5 : jointure ou combinaison de produit cartésien et restriction
Req6 : projection et jointure
Req7 : différence

EXERCICE 2

4- SELECT * FROM etudiant WHERE ville = 'Lyon' OR prenom = 'jean' ORDER BY prenom;
date de naissance
2000-05-19
2001-09-01
2001-09-01
2003-03-31
2004-01-15
2004-02-24

numero nom prenom ville datenaiss


2022005 DELABIO Jean 2000-05-19
2022004 DUBOIS Marie Paul Nice 2004-02-24
Exercice 3 : Requêtes de requêtes SQL (7 pts)

1) Afficher l’ensemble des âges sans doublons des élèves


SELECT DISTINCT Age FROM Eleves;

2) Afficher les noms et prénoms des élèves de MPSI


SELECT Nom,Prenom FROM Eleves WHERE Classe = "MPSI";

3) Afficher l’ensemble des âges sans doublons des élèves de 1° année


SELECT DISTINCT age FROM Eleves WHERE Classe = "MPSI" OR Classe =
"PCSI";

4) Afficher la liste des élèves (nom, prénom) qui ont atteint l’âge adulte (18ans)
SELECT Nom,Prenom FROM Eleves WHERE Age >= 18;

5) Compter le nombre d’élèves venant de Yamoussoukro


SELECT COUNT(*) FROM Eleves WHERE Ville = "Yamoussoukro";

6) Déterminer l’âge moyen de l’ensemble des élèves


SELECT AVG(age) FROM Eleves;

7) Afficher la liste des élèves sous la forme de n-uplets (Nom, Prénom, Salle) afin que chaque élève trouve
la salle dans laquelle il doit aller pour voir le professeur associé.
SELECT Eleves.Prenom, Eleves.Nom, Professeurs.Salle FROM Eleves JOIN
Professeurs ON Eleves.Classe = Professeurs.Classe;

8) Restreindre cette liste aux élèves de MPSI


SELECT Eleves.Prenom, Eleves.Nom, Professeurs.Salle FROM Eleves JOIN
Professeurs ON Eleves.Classe = Professeurs.Classe WHERE Eleves.Classe
= "MPSI" ;

9) Afficher la liste des profs ayant des élèves mineurs


SELECT DISTINCT Professeurs.Nom FROM Professeurs JOIN Eleves ON
Eleves.Classe = Professeurs.Classe WHERE Eleves.Age < 18;

10) Afficher la liste des classes et de leurs effectifs


SELECT Classe,COUNT(*) FROM Eleves GROUP BY Classe;

11) Trouver les classes ayant au moins 3 élèves


SELECT Classe FROM Eleves GROUP BY Classe HAVING COUNT(*)>=3;

12) Trouver 3 élèves (nom, prénom) parmi les plus jeunes


SELECT nom,prenom FROM Eleves ORDER BY Age LIMIT 3;

13) Etablir le liste des noms, prénoms des élèves, organisée par ordre alphabétique sur les noms d’abord, sur
les prénoms ensuite
SELECT nom,prenom FROM Eleves ORDER BY Nom,Prenom;

14) Trouver le second élève (nom, prénom) de la liste triée par ordre alphabétique obtenue précédemment
SELECT nom,prenom FROM Eleves ORDER BY Nom,Prenom LIMIT 1 OFFSET 1;
Ou SELECT nom,prenom FROM Eleves WHERE id NOT IN (SELECT id FROM Eleves
ORDER BY Nom,Prenom LIMIT 1) ORDER BY nom,prenom LIMIT 1

Vous aimerez peut-être aussi