Vous êtes sur la page 1sur 8

ISKA 2020/2021

Filière : Génie Logiciel / Télécommunications (1ère année)


Matière : Base de données et MERISE

Travaux dirigés (Corrigés): Initiation aux bases de données


Proposé par : M. ESSOMBA ONGALI HENRI-JOEL

Exercice 1 :
Soit la base de l’extension suivante de la relation Personne :
Numero Nom Prenom
1 Bonicoli Pierre-Louis
2 Grossetete Sandrine
3 Renaud Stephane
4 Rum Alexandra
Que valent les expressions suivantes ?
1. [ ; ] [ ] (Personne)
2. [ # ] (Personne)
3. [ ] [ # ]( [ , ] (Personne)))

Solution 1
1. [ ; ]( [ ] (Personne)
Nom Prenom
Grossetete Sandrine
Renaud Stephane
Rum Alexandra

2. [ # ] (Personne)
Numero Nom Prenom
2 Grossetete Sandrine

3. [ ] ( [ # ]( [ , ] (Personne)))
Prenom
Pierre-Louis
Stephane
Alexandra

Exercice 2 :
On considère les relations suivantes:
PERSONNE (CIN, NOM, Prenom, Adresse) ;
Voiture(NCarteGrise, CIN, Modele)
Moto(NCarteGrise, CIN, Modele)
Ecrire les expressions représentant:
1. Afficher les personnes qui possèdent une voiture mais pas de moto?
2. Afficher les personnes qui possèdent une voiture et une moto?
3. Afficher les personnes qui ne possèdent ni voiture ni moto?

Solution 2
1. Afficher les personnes qui possèdent une voiture mais pas de moto?
[ , !, ," ## ] [( [ ]$ % − [ ] ! % ) Personne]

2. Afficher les personnes qui possèdent une voiture et une moto?


[ , !, ," ## ] [( [ ]$ % [ ] ! % ) Personne]

3. Afficher les personnes qui ne possèdent ni voiture ni moto?


[ , !, ," ## ] [( [ ] # − ( [ ]$ % ( [ ]! % )) Personne]

Exercice 3 :
On considère la relation suivante : Projet (numP, nomP, budget, ville).
Projet
numP nomP Budget Ville
P1 Musique 150 000 Douala
P2 Developpement des bases de 135 000 Bafoussam
données
P3 CAD/CAM 250 000 Bafoussam
P4 Maintenance 310 000 Dschang
Représenter pour chaque relation suivante, l’opération de fragmentation ainsi que la table
résultante, en tenant compte des requêtes suivantes :

1. R1 : SELECT nomP, budget FROM Projet WHERE ville = “Bafoussam”;


2. R2: SELECT nomP, budget FROM Projet;
3. R3: SELECT nomP, ville FROM Projet WHERE Budget > 200 000;
4. R4: SELECT * FROM Projet WHERE budget < 200 000.

Solution 3
1. R1 : SELECT nomP, budget FROM Projet WHERE ville = “Bafoussam”;
Opération : [ ;) * %] ( [+ ," . ## "] Projet)
Table résultante :
nomP Budget
Developpement des bases de données 135 000
CAD/CAM 250 000

2. R2: SELECT nomP, budget FROM Projet;


Opération : [ ,) * %] (Projet)
Table résultante :
nomP Budget
Musique 150 000
Developpement des bases de données 135 000
CAD/CAM 250 000
Maintenance 310 000

3. R3: SELECT nomP, ville FROM Projet WHERE Budget > 200 000;
Opération : [ ;+ ] ( [) * % /00 000] Projet)
Table résultante :
nomP Ville
CAD/CAM Bafoussam
Maintenance Dschang

4. R4: SELECT * FROM Projet WHERE budget < 200 000.


Opération : [) * % /00 000] (Projet)

Table résultante :
numP nomP Budget Ville
P1 Musique 150 000 Douala
P2 Developpement des bases de données 135 000 Bafoussam

Exercice 4:
La base de données d'une entreprise d'informatique, IfriCréa, a le schéma global suivant:
SERVICE (#service, nom, chef, site)
PROJET (#projet, #service, nom, chef, budget, durée, date-début)
EMPLOYE (#emp, #service, nom, prénom, fonction, salaire, prime-annuelle, date-naiss,
adresse, #tel)

IfriCréa est localisé sur trois sites de la région de Douala: Douala Akwa, Douala Bonabéri, et
Douala Bépanda. Le site de Douala Akwa tient également lieu de siège pour l'entreprise.
Pour la mise en place de sa base de données, l’on tient compte des hypothèses suivantes :
 L'attribut « site » de SERVICE prend une des valeurs suivantes: "Akwa", "Bonabéri", et
"Bépanda".
 L'attribut « nom » de SERVICE prend une des valeurs suivantes: "commercial", "financier",
"technique", "maintenance", "recherche et développement", etc.
 #service (resp. #emp) est clé primaire de SERVICE (resp. EMPLOYE).
 #projet est local à un service.
 Le chef d'un service ou d'un projet est un employé désigné par son numéro.
 Les employés sont affectés à un site donné, sauf pour les employés du service de maintenance
qui interviennent dans tous les sites.
 Les données concernant la rémunération ainsi que les informations personnelles des employés
sont regroupées et centralisées au siège de l'entreprise.

1.
a) Donner les trois (03) opérateurs de l’algèbre relationnel pour fragmenter la table SERVICE
sur les sites "Akwa", "Bonabéri", et "Bépanda" ;
b) Définir les requêtes SQL associées à chacun des opérateurs définis à la question 1.a) ;

2. Proposer trois (03) opérateurs de l’algèbre relationnel permettant d’effectuer les fragmentations
dérivées sur la table PROJET (à chaque opérateur on obtiendra les fragments
123456789: , 123456;<=:>é@A et 123456;éB:=C: ) ;
Solution 4
1.
a) Opérateurs pour fragmenter la table SERVICE
SERVICEAkwa = D[#EF@GAHF,=<I,HJFK] (L[EAMF,"789:"] (SERVICE)) ;
SERVICEBonabéri = D[#EF@GAHF,=<I,HJFK] (L[EAMF,";<=:>é@A"] (SERVICE)) ;
SERVICEBépanda = D[#EF@GAHF,=<I,HJFK] (L[EAMF,";éB:=C:"] (SERVICE))

b) Opérateurs pour fragmenter la table SERVICE


SERVICEAkwa : SELECT service, nom, chef FROM service WHERE site = “Akwa”
SERVICEBonabéri : SELECT service, nom, chef FROM service WHERE site = “Bonabéri”
SERVICEBépanda : SELECT service, nom, chef FROM service WHERE site = “Bépanda”

2. Opérateurs pour fragmentation dérivée de la table PROJET


PROJETAkwa = PROJET U SERVICEAkwa
PROJETBonabéri = PROJET U SERVICEBonabéri
PROJETBépanda = PROJET U SERVICEBépanda

3. Requête SQL : regrouper les infos personnelles des employés du siège :

EMPLOYEPersonnelle :

SELECT emp, nom, prénom, salaire, prime-annuelle, date-naiss, adresse, tel


FROM employe

Exercice 5 :
Soit le schéma de la base de données Bibliothèque suivante :

Etudiant(NumEtd,NomEtd,PrenomEdt,AdresseEtd)
Livre(NumLivre,TitreLivre,NumAuteur,NumEditeur,NumTheme,AnneeEdition)
Auteur(NumAuteur,NomAuteur,AdresseAuteur)
Editeur(NumEditeur,NomEditeur,AdresseEditeur)
Theme(NumTheme,IntituléTheme)
Prêt(NumEtd,NumLivre,DatePret,DateRetour)

En gras les clés primaires et en italique les clés étrangères


Ecrire en langage algébrique les requêtes suivantes :
1. Le nom, le prénom et l’adresse de l’étudiant de nom ‘Alami’
2. Le numéro de l’auteur ‘Alami’
3. la liste des livres de l’auteur numéro 121
4. les livres de l’auteur nom ‘Alami’
5. le numéro de l’auteur du livre ‘comment avoir 20 en BDD’
6. le nom et l’adresse de l’auteur du livre ‘comment avoir 20 en BDD’
7. Les livres de l’auteur ‘Alami’ «édités chez l’éditeur ‘Nul part’
8. les livres de l’auteur ‘Alami’ ou ‘Belhadj’
9. les livres qui n’ont jamais été empruntés
Solution 5
1. Le nom, le prénom et l’adresse de l’étudiant de nom ‘Alami’
D[N<IOMC,P@F=<IOMC,7C@FEEFOMC] ( L[N<IOMC,Q7R:IAQ] Etudiant)

2. Le numéro de l’auteur ‘Alami’


D[NSI7SMFS@] ( L[N<I7SMFS@,Q7R:IAQ] Auteur)

3. la liste des livres de l’auteur numéro 121


D[NSI7SMFS@,TUT] Livre

4. les livres de l’auteur nom ‘Alami’


D[VAG@F] ∗ ( L[N<I7SMFS@,Q7R:IAQ] (Livre x Auteur))

5. le numéro de l’auteur du livre ‘comment avoir 20 en BDD’


D[NSI7SMFS@] ( LXYAM@FVAG@F,Z H<IIF=M:G<A@ U[ F= ;\\Z ] (Livre x Auteur))

6. le nom et l’adresse de l’auteur du livre ‘comment avoir 20 en BDD’


D[N<I7SMFS@,7C@FEEF7SMFS@] ( LXYAM@FVAG@F,Z H<IIF=M:G<A@ U[ F= ;\\Z ] (Livre x Auteur))

7. Les livres de l’auteur ‘Alami’ «édités chez l’éditeur ‘Nul part’


D[VAG@F] ∗ ( LXN<I7SMFS@,Z 7R:IA Z :=C N<IOCAMFS@,Z =SRRFB:@MQ] (Livre x Editeur) x Auteur)

8. les livres de l’auteur ‘Alami’ ou ‘Belhadj’


D[VAG@F] ∗ ( LXN<I7SMFS@,Z 7R:IA Z <@ N<I7SMFS@,Z ;FRJ:C^Q] (Livre x Auteur)

9. les livres qui n’ont jamais été empruntés


[_ + ] ∗ (( L[NSI`abcd] `abcd − D[NSI`abcd] 1cêf) x Livre)

Exercice 6 : TP langage SQL


Soit la base de données relationnelle des vols quotidiens d’une compagnie aérienne qui contient les
tables Avion, Pilote et Vol.

Table Avion (NA : numéro avion de type entier (clé primaire),


Nom : nom avion de type texte (12),
Capacite : capacité avion de type entier,
Localite : ville de localité de l’avion de type texte (10) )

Table Pilote (NP : numéro pilote de type entier,


Nom : nom du pilote de type texte (25),
Adresse : adresse du pilote de type texte (40) )

Table Vol (NV : numéro de vol de type texte (6),


NP : numéro de pilote de type entier,
NA : numéro avion de type entier,
VD : ville de départ de type texte (10),
VA : ville d’arrivée de type texte (10),
HD : heure de départ de type entier,
HA : heure d’arrivée de type entier )

1. Insérer les avions suivants dans la table Avion : (100, AIRBUS, 300, RABAT),
(101,B737,250,CASA), (101, B737,220,RABAT)

2. Afficher tous les avions

3. Afficher tous les avions par ordre croissant sur le nom

4. Afficher les noms et les capacités des avions

5. Afficher les localités des avions sans redondance

6. Afficher les avions dans la localité et Rabat ou Casa

7. Modifier la capacité de l’avion numéro 101, la nouvelle capacité et 220

8. Supprimer les avions dans la capacité et inférieure à 200

9. Afficher la capacité maximale, minimale, moyenne des avions

10. Afficher les données des avions dont la capacité et la plus basse

11. Afficher les données des avions dont la capacité et supérieure à la capacité moyenne

12. Afficher le nom et l’adresse des pilotes assurant les vols IT100 et IT104

13. Afficher les numéros des pilotes qui sont en service

14. Afficher les numéros des pilotes qui ne sont pas en service

15. Afficher les noms des pilotes qui conduisent un AIRBUS

Solution 6

1.
Insert into avion values (100, 'AIRBUS', 300, 'RABAT');
Insert into avion values (101,'B737',250,'CASA');
Insert into avion values (101, 'B737',220,'RABAT');

2.
select *
from avion;

3.
select *
from avion
order by Nom asc;

4.
select nom, Capacite
from avion;

5.
select distinct Localite
from avion;

6.
select *
from avion
where Localite='Rabat' or Localite='Casa' ;

7.
Update avion set Capacite=220
where NA=101;

8.
Delete from avion
where Capacite <200;

9.
Select Max(Capacite), Min(Capacite), Avg(Capacite)
from avion;

10.
Select *
from avion
where Capacite=min(Capacite);

11.
Select *
from avion
where Capacite>=avg(Capacite);

12.
Select Nom, Adresse
from Pilote, Vol
where Pilote.NP= Vol.NP and NV='IT100' and NV='IT104';

13.
Select NP
from Vol;
14.
Select NP
from Pilote
where NP not in (select NP from Vol);

15.
Select Pilote.NOM
from Pilote, Vol, Avion
where Pilote.NP= Vol.NP and Avion.NA=Vol.NA
and Avion.NOM='AIRBUS';

Vous aimerez peut-être aussi