You are on page 1of 4

Corrections pour la BD "Enseignement"

1. Créez la base de données "Enseignements".

create database enseignements;

2. Créez les tables dans cette base de données en respectant le schéma Entité-Association.

create table Etudiant (Num int not null auto_increment, Nom varchar(30), Prenom varchar(20), Adresse
varchar(40), Ville varchar(20), CodePostal int, Email varchar(20), Annee int, Groupe int, primary key(Num));

create table Prof (Num int not null auto_increment, Nom varchar(30), Prenom varchar(20), Bureau
varchar(20), Email varchar(25), Telephone varchar(15), MatSpec int, primary key(Num), foreign
key(MatSpec) references matiere(code));

create table Matiere (Code int not null auto_increment, Libelle varchar(30), HCoursPrev int, HCoursRealise
int, HTPPrevu int, HTPRealise int, Discipline varchar(20), CoeffTest int, CoeffControl int, ProfResp int,
primary key(Code), foreign key(ProfResp) references Prof(Num));

create table Enseignement (CodeMat int, NumProf int, NumEt int, foreign key(CodeMat) references
Matiere(Code), foreign key(NumProf) references Prof(Num), foreign key(NumEt) references
Etudiant(Num));

create table Notation(NumEtud int, CodeMat int, NoteTest int, NoteCC int, foreign key(NumEtud)
references Etudiant(Num), foreign key(CodeMat) references Matiere(Code));

3. Insérez des données dans les tables en respectant l’intégrité de la base de données (clés étrangères en
accord avec les clés primaires). Minimum 10 enregistrements par table.

insert into Etudiant (Nom, Prenom, Adresse, Ville, CodePostal, Email, Annee, Groupe) values ("Ahmed",
"Aziz", "Traverse", "Oujda", 60000, "ahmed@free.fr", 2, 1), ("Yahia", "Ali", "Pin", "Berkane", 61000,
"ali@ensa.ma", 1, 3), ("Dubois", "Safia", "Chez", "Jerada", 63000, "safia@jerada.ma ", 2, 4), ("Blanche",
"neige", "Chemin", "Oujda", 60000, "neige@free.fr", 1, 3);

insert into prof (Nom, Prenom, Bureau, Email, Telephone, MatSpec) values ("Saber", "Mohamed", 123,
"saber@ensa.ma", "06.91.17.79.17", 3);

insert into prof (Nom, Prenom, Bureau, Email, Telephone, MatSpec) values ("Azizi", "Mostafa", "Jamaique",
"azizi@ensao.ma", "06.91.17.79.19", 2);

……..

insert into matiere (Libelle, HCoursPrev, HCoursRealise, HTPPrevu, HTPRealise, Discipline, CoeffTest,
CoeffControl, ProfResp) values ("Architecture", 10, 8, 12, 10, "Informatique", 1, 1, 3), ("Bases de donnees",
8, 8, 12, 12, "Informatique", 1, 1, 1), ("Protocoles", 12, 12, 16, 16, "Reseaux", 1, 1, 2);

insert into matiere (Libelle, HCoursPrev, HCoursRealise, HTPPrevu, HTPRealise, Discipline, CoeffTest,
CoeffControl, ProfResp) values ("Communication 1", 10, 10, 10, 10, "Communication", 1, 1, 4), ("Gestion 1",
10, 10, 10, 10, "Gestion", 1, 1, 5);

1
Corrections pour la BD "Enseignement"

insert into enseignement (CodeMat, NumProf, NumEt) values (1, 1, 1), (1, 2, 3), (2, 3, 2), (3, 3, 3);

insert into Notation values (1, 1, 12, 15), (1, 2, 13, 14), (1, 3, 10, 16), (2, 3, 11, 11);

4. Quels sont les nom et prénoms des enseignants occupant le bureau "Port au prince".

select nom, prenom from prof where bureau like "Port au prince";

5. Affichez toutes les informations sur les matières de la discipline "Informatique".

select * from matiere where discipline="Informatique";

6. Donnez la liste des étudiants (numéro et nom) domiciliés à Oujda.

select Num, Nom from Etudiant where ville="Oujda";

7.Affichez la liste des matières enseignées (leur libellé), avec les volumes horaires prévus pour les cours et
les TP dans toutes les disciplines sauf en "Communication" et en "Gestion".

select code, libelle from matiere where discipline not in ("Communication", "Gestion");

8. Donnez le total des heures prévues en cours et en TP pour toutes les matières dans la discipline
"Informatique".

select sum(HCoursPrev) as Heures_Cours, sum(HTPPrevu) as Heures_TP from matiere where


discipline="Informatique";

9. Quels sont les codes et les libellés des matières pour lesquelles le numéro du professeur responsable
n’est pas valorisé dans la base de données (ProfResp = null).

select matiere.code, matiere.libelle from matiere, prof where matiere.ProfResp=prof.Num and


prof.MatSpec=null;

10. Donnez pour un étudiant la liste par ordre décroissant des notes de test obtenues avec le code de la
matière associée.

select etudiant.Num, etudiant.nom, Notation.NoteTest, Notation.NoteCC from etudiant, notation where


etudiant.num=notation.numetud order by Notation.NoteTest ASC;

11. Donnez la liste des matières (code et libellé) enseignées par Ilhame El Farissai.

select matiere.code, matiere.libelle from matiere, prof where matiere.ProfResp=prof.Num and


Prof.Nom="Moahmed" and Prenom="Saber";

12. Quels sont les groupes de 3ème année pour lesquels Mohamed Saber a effectué un enseignement.

select etudiant.groupe, etudiant.annee from etudiant, enseignement, prof where etudiant.annee=2 and
etudiant.num=enseignement.numet and enseignement.numprof=prof.num and prof.nom="Madjarov";
2
Corrections pour la BD "Enseignement"

13. Donnez la liste, par ordre alphabétique, des noms de tous les étudiants ayant suivi l’enseignement
effectué par un professeur, par ailleurs responsable d’une matière.

select distinct etudiant.num, etudiant.nom, etudiant.prenom from etudiant, enseignement, prof, matiere
where etudiant.num=enseignement.numet and enseignement.numprof=prof.num and
prof.num=matiere.profresp order by etudiant.nom asc;

14. Donnez la liste, par ordre alphabétique, des noms de tous les étudiants ayant suivi l’enseignement
d’une matière effectué par le professeur responsable de cette matière.

select distinct etudiant.nom from etudiant, enseignement, prof, matiere where


etudiant.num=enseignement.numet and enseignement.numprof=prof.num and
prof.num=matiere.profresp order by etudiant.nom asc;

15. Combien de professeurs et étudiants il y en a actuellement dans la base de données.

select count(DISTINCT etudiant.num) as nb_etudiants, count(DISTINCT prof.num) as nb_prof from


etudiant, prof;

16. Quelle est la moyenne des notes de contrôle continu pour la matière "Base de données".

select avg(notation.notecc) as moyenne from notation, matiere where notation.codemat=matiere.code


and matiere.libelle like "Bases de donnees";

17. Quelle est la moyenne des notes de contrôle continu pour la discipline "Informatique".

select avg(notation.notecc) as moyenne from notation, matiere where notation.codemat=matiere.code


and matiere.discipline like "Informatique";

18. Quels sont les professeurs (nom de prof) ayant donné des cours à l’étudiant X, toutes matières
confondues.

select prof.nom from prof, enseignement where prof.num=enseignement.numprof and


enseignement.numet=3;

19. Pour la matière dont le libellé est "Math", donnez la note moyenne obtenue par les étudiants en tenant
compte des coefficients de contrôle continu et de test.

20. Quelle est la matière (libellé), dont le coefficient est le plus faible.

select libelle from matiere where coefftest=(select min(coefftest) from matiere);

21. Quelle est la matière dans laquelle la meilleure note de test a été obtenue.

select matiere.libelle from matiere, notation where matiere.code=notation.codemat and notetest=(select


max(notetest) from notation);

3
Corrections pour la BD "Enseignement"

22. Quels sont les noms des étudiants qui ont obtenu, toutes matières confondues, la meilleure note de
test.

select etudiant.num, etudiant.nom from etudiant, notation where etudiant.num=notation.numetud and


notetest=(select max(notetest) from notation);

23. Donnez la moyenne générale de l’étudiant X en prenant compte les coefficients de contrôle continu et
de test.

a) select distinct avg((notation.notecc*matiere.coeffcontrol)+(notation.notetest*coefftest)) as


moyenne_generale from matiere inner join (etudiant inner join notation on
etudiant.num=notation.numetud) on matiere.code=notation.codemat where etudiant.num=1;

b) select distinct avg((notation.notecc*matiere.coeffcontrol)+(notation.notetest*coefftest)) as


moyenne_generale from matiere, notation, etudiant where (etudiant.num=notation.numetud) and
(matiere.code=notation.codemat) and etudiant.num=1;

24. Affichez le relevé de note pour un étudiant X. Un relevé de note affiche les moyennes par matière pour
l’étudiant en tenant compte des coefficients de contrôle continu et de test.

select etudiant.nom, avg((notation.notecc*matiere.coeffcontrol)+(notation.notetest*coefftest)) as


moyenne_generale from matiere, notation, etudiant where (etudiant.num=notation.numetud) and
(matiere.code=notation.codemat) group by etudiant.nom;

You might also like