Exercice 1 : Club de tennis - Création de la base de données

117
Chapitre B15 : Langage de définition de données
Exercice 1 : Club de tennis - Création de la base de données
@ Mémento SQL
: Éventuellement
1.1 - Quelle est la clé primaire de la table Adherent ? Quelles doivent être ses caractéristiques ?
La clé primaire de la table Adherents est numAdh qui doit être, pour chaque enregistrement, unique, stable et définie.
1.2 - Dans quelle table inscrit-on un licencié (un adhérent) à une leçon ?
Cela s’enregistre dans la table Inscription.
1.3 - Quelle est la clé primaire de la table Inscription ?
La clé primaire de la table Inscription est le couple (numAdh.numLecon)
1.4 - Que signifient les symboles 1 et d reliant les champs « numAdh » des tables « Inscription » et « Adherent » ?
Cela signifie qu’un adhérent peut s’inscrire à plusieurs leçons. C’est une contrainte d’intégrité multiple.
1.5 - Les leçons sont-elles toujours individuelles ?
Si les leçons étaient obligatoirement individuelles, la table Lecon serait directement en relation avec la table
Adherent par une clé étrangère numAdh.
1.6 - Le nombre de leçons suivies peut-il être :
- identique au nombre total des adhérents ?
C’est possible mais pas plus probable qu’un autre cas : cela signifierait que chaque adhérent a suivi en moyenne
une leçon.
- supérieur au nombre total des adhérents ?
Cela correspondrait au cas où les adhérents ont suivi en moyenne plus d’une leçon.
- inférieur au nombre total des adhérents ?
Cette hypothèse correspond à un nombre moyen de leçons suivies par les adhérents inférieur à un (certains ad-
hérents ne prennent pas de leçons et cela n’est pas compensé par les leçons suivies par les autres).
1.7 - Quel est le type du champ « montantCot » de la table « Cotisation » ?
Il s’agit d’un champ réel (monétaire).
1.8 - Dans quel champ de quelle table peut-on vérifier qu’un adhérent a bien payé sa cotisation ?
Cette vérification est permise par le champ cotReglee qui est probablement booléen (il pourrait aussi contenir la date
de règlement qui serait donc non nulle en cas de règlement à jour).
Objectifs #?dj[hfhj[hkdceZb[f^oi_gk[
#C[jjh[[d·klh[b[ih[gkj[iZ[YhWj_edZ[jWXb[
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
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !