118
1.9 - Présentez les requêtes de création des tables Adherent, Lecon, Cotisation et Inscription afin de les implanter sous MySQL. On
tiendra compte, pour faciliter la saisie, que 80 % des adhérents sont des hommes habitant Mennecy (91540).
CREATE TABLE Adherent ( numAdh integer Not Null AUTO-INCREMENT,
sexeAdh varchar(1) Not Null DEFAULT “H“,
civiliteAdh varchar(12) Not Null DEFAULT “Monsieur“,
nomAdh varchar(30) Not Null,
prenomAdh varchar(30) Not Null,
adrAdh varchar(100) Not Null,
CPAdh integer Not Null DEFAULT “91540“,
villeAdh varchar (30) Not Null,
PRIMARY KEY (numAdh));
CREATE TABLE Cotisation ( numCot integer Not Null AUTO-INCREMENT,
anneeCot smallint DEFAULT YEAR(CURRENT_DATE),
cotReglee decimal(3,2),
regltCot Boolean,
numAdh integer,
PRIMARY KEY (numCot),
FOREIGN KEY (numAdh) REFERENCES Adherent(numAdh));
CREATE TABLE Lecon ( numLecon smallint Not Null AUTO-INCREMENT,
niveauLecon varchar(10),
jourLecon Date Not Null,
debutLecon Time Not Null,
finLecon Time Not Null,
PRIMARY KEY (numLecon));
CREATE TABLE Inscription ( numAdh integer Not Null,
numLecon smallint,
PRIMARY KEY (numAdh, numLecon),
FOREIGN KEY (numAdh) REFERENCES Adherent(numAdh),
FOREIGN KEY (numLecon) REFERENCES Lecon(numLecon));
1.10 - Quel autre document aurait pu aider à la création des tables ?
Le dictionnaire des données recense l’ensemble des données de la base de données en précisant leur type.
1.11 - Le trésorier du club de tennis souhaite connaître les nom et prénom des licenciés n’ayant pas encore réglé leur cotisation. Écrivez
cette requête en SQL.
SELECT nomAdh, prenomAdh
FROM Adherent, Cotisation
WHERE Adherent.numAdh = Cotisation.numAdh
AND cotReglee = False ;
1.12 - On vous demande de déterminer l’effectif des cours (nombre de licenciés) par niveau de tennis (compétition, confirmé, intermé-
diaire et débutant). Écrivez cette requête en SQL.
SELECT niveauLecon, COUNT(numAdh) AS effectif
FROM Inscription, Lecon
WHERE Lecon.numLecon = Inscription.numLecon
GROUP BY niveauLecon ;
1.13 - Créez une vue, nommée Adh2010, des adhérents (sans leurs coordonnées personnelles), à jour de cotisation pour 2010, à
destination des moniteurs.
CREATE VIEW Adh2010
AS SELECT civiliteAdh, nomAdh, prenomAdh, sexeAdh, Adherent.numAdh
FROM Adherent, Cotisation
WHERE Adherent.numAdh = Cotisation.numAdh
AND cotReglee = True
AND anneeCot = 2010