Aller au contenu

Application Gestion du Lycée Denis Dormand⚓︎

1. Script de création des tables⚓︎

Vous allez écrire le script qui créé les tables afin de stocker les données suivantes. Les clés primaires sont soulignées, vous ne gérez pas (pas tout de suite !) les clés étrangères.

ELEVE

NumEtu Nom Prénom NumCla
E01 Kervadec Karine 1
E02 Deschamps Albert 2
E03 Albertini Michel 1

CLASSE

NumCla LibelléCla
1 Première A
2 Première B
3 Seconde A
4 SIO1
5 SIO2

PROFESSEUR

NumProf Nom Prénom Echelon
P01 Rouxel Monique 4
P02 Deschamps Corinne 5
P03 Gauthier Jean-Paul 4

On ajoute également quelques contraintes sur les attribus. Il y a au maximum :

  • 99 professeurs
  • 999 élèves
  • 15 classes
  • 10 échelons

▶️ Par défaut, l'échelon est à 1.
▶️ Les noms et prénoms des deux tables doivent être obligatoirement renseignés.

M1

Donnez le script de création de la base, respectant ces contraintes.

```SQL CREATE TABLE IF NOT EXISTS ETUDIANT( NumEtu CHAR(3), NomEtu CHAR(30) NOT NULL, PrénomEtu CHAR(30) NOT NULL, NumCla TINYINT );

CREATE TABLE IF NOT EXISTS CLASSE ( NumCla TINYINT, LibelléCla CHAR(30) DEFAULT NULL );

CREATE TABLE IF NOT EXISTS PROFESSEUR( NumProf CHAR(2), NomProf CHAR(30) NOT NULL, PrénomProf CHAR(30) NOT NULL, Echelon TINYINT DEFAULT 1 ); ```

2. Modification de la structure de la base⚓︎

M2

Ajoutez par script les dates de naissance pour les professeurs et les élèves.

SQL ALTER TABLE Etudiant ADD DateNaisEtu DATETIME; ALTER TABLE Professeur ADD DateNaisProf DATETIME;

M3

Ecrivez la création de la table suivante et insérez par script les données ci-dessous.

MATIERE

NumMat Libellé
M01 Français
M02 Anglais
M03 Histoire-Géographie

```SQL CREATE TABLE MATIERE ( NumMat CHAR(3), Libellé CHAR(30) );

INSERT INTO matiere (NumMat, Libellé) VALUES ('M01', 'Francais'), ('M02', 'Anglais'), ('M03', 'Histoire-geographie'); ```

M4

Ecrivez la création de la table suivante.
Et insérez (par script) tous les élèves dont le NumCla est 1.

Elève_stage

NumEtu Nom Prénom NumCla Entreprise
E01 Kervadec Karine 1 StSau
E03 Albertini Michel 1 Beaumon

SQL CREATE TABLE IF NOT EXISTS ETUDIANT_stagiaire( NumEtu CHAR(3), NomEtu CHAR(30) NOT NULL, PrénomEtu CHAR(30) NOT NULL, NumCla TINYINT, Entreprise Varchar(35) DEFAULT NULL ); INSERT INTO `etudiant_stagiaire`(`NumEtu`, `NomEtu`, `PrénomEtu`, `NumCla`) Select `NumEtu`, `NomEtu`, `PrénomEtu`, `NumCla` FROM etudiant WHERE etudiant.numCla = 1;

M5

Supprimez l’échelon du professeur. Ecrivez le script correspondant.

SQL ALTER TABLE professeur DROP COLUMN Echelon;

M6

Imaginez le schéma relationnel complet du lycée. Que manque-t-il pour faire le lien d'enseignement ?
Indiquez l’ordre de création des tables

SQL CLASSE (NumCla, LibelléCla) Clé primaire : NumCla PROFESSEUR (NumProf, NomProf,PrénomProf, DateNaisProf) Clé primaire : NumProf MATIERE (NumMat, Libellé ) Clé primaire : NumMat ETUDIANT (numEtu, NomEtu, PrénomEtu,NumCla, DateNaisEtu) Clé primaire : NumEtu Clé étrangère : NumMat en référence à NumCla de la table MATIERE ETUDIANT_STAGIAIRE (numEtu, NomEtu, PrénomEtu,NumCla, Entreprise) Clé primaire : NumEtu Clé étrangère : NumMat en référence à NumCla de la table MATIERE COURS (NumCla, NumMat, NumProf) Clé primaire : NumCla, NumMat, NumProf Clé étrangère : NumCla en référence à NumCla de la table CLASSE NumMat en référence à NumMat de la table MATIERE NumProf en référence à NumProf de la table PROFESSEUR /* Ordre de création des tables CLASSE, PROFESSEUR, MATIERE Puis ETUDIANT et ETUDIANT_STAGIAIRE Pour finir par COURS */ -- On créé la table de relation Cours CREATE TABLE Cours ( NumCla TINYINT, NumMat CHAR(3), NumProf CHAR(2) );

M7

Complétez votre script afin de rajouter les clés étrangères sous forme de contraintes.

SQL -- On ajoute toutes les contraintes de clés primaires ALTER TABLE Classe ADD CONSTRAINT pk_classe PRIMARY KEY (NumCla); ALTER TABLE professeur ADD CONSTRAINT pk_professeur PRIMARY KEY (NumProf); ALTER TABLE Matiere ADD CONSTRAINT pk_matiere PRIMARY KEY (NumMat); ALTER TABLE Etudiant ADD CONSTRAINT pk_etudiant PRIMARY KEY (NumEtu); ALTER TABLE Etudiant_stagiaire ADD CONSTRAINT pk_etudiant_stagiaire PRIMARY KEY (NumEtu); ALTER TABLE cours ADD CONSTRAINT pk_cours PRIMARY KEY (NumCla,NumProf,NumMat); --On ajoute les contraintes de clés étrangères ALTER TABLE ETUDIANT ADD CONSTRAINT fk_etudiant_classe FOREIGN KEY (NumCla) REFERENCES Classe(NumCla); ALTER TABLE ETUDIANT_STAGIAIRE ADD CONSTRAINT fk_etudiant_stagiaire_classe FOREIGN KEY (NumCla) REFERENCES Classe(NumCla); ALTER TABLE COURS ADD CONSTRAINT fk_cours_classe FOREIGN KEY (NumCla) REFERENCES Classe(NumCla); ALTER TABLE COURS ADD CONSTRAINT fk_cours_mat FOREIGN KEY (NumMat) REFERENCES Classe(NumMat); ALTER TABLE COURS ADD CONSTRAINT fk_cours_professeur FOREIGN KEY (NumProf) REFERENCES Classe(NumProf);

M8

Supprimer la clé étrangère d'Eleve_stagiaire.

SQL ALTER TABLE Etudiant_stagiaire DROP FOREIGN KEY fk_etudiant_stagiaire_classe; -- Note : MySQL ne supporte pas le DROP CONSTRAINT qui serait plus logique

M9

Ecrivez le script pour supprimer toutes les tables.
Ecrivez le script pour supprimer la base de données

SQL DROP TABLE Etudiant_stagiaire ; /* -- ETC ...*/ DELETE DATABASE lycee ;