The show
[30 minutes]
Soit le schéma relationnel suivant décrivant un système de réservations de places de spectacles :
SPECTACLE (#nospectacle:int, nom:str, durée:int, type:{théâtre|danse|concert})
SALLE (#nosalle:int, nbplaces:int)
REPRESENTATION (#date:date, #nospectacle=>SPECTACLE, #nosalle=>SALLE, prix:decimal)
En faisant les suppositions suivantes :
On gère un espace de spectacles ayant un ensemble de salles (décrit par la relation SALLE).
On suppose que pour un jour donné et une salle donnée, il n'y a qu'un seul spectacle représenté.
Question
Retro-concevoir le MCD en UML.
Solution
Complément : Classe d'association
Question
Proposer des contraintes d'intégrité réalistes pour ce schéma (en français).
Solution
Exemple :
sur SPECTACLES :
le nom d'un spectacle est non nul,
la durée d'un spectacle est comprise entre 1h et 4 h,
sur SALLES :
la capacité d'une salle est comprise entre 100 et 500 places.
sur REPRESENTATION :
le prix d'une représentation est compris entre 10 et 50 €,
certaines dates peuvent être interdites (le premier mai par exemple).
Question
Proposer une définition du schéma en SQL qui prenne en compte certaines de ces contraintes.
Solution
CREATE TABLE SPECTACLE (
nospectacle integer,
nom varchar(30) NOT NULL,
duree integer,
type char(7),
PRIMARY KEY (nospectacle),
CHECK (duree>1 and duree<4),
CHECK (type in ('théâtre', 'danse', 'concert'))
);
CREATE TABLE SALLE (
nosalle integer,
nbplaces integer,
PRIMARY KEY (nosalle),
CHECK (nbplaces>100 and nbplaces<500)
);
CREATE TABLE REPRESENTATION (
nospectacle integer,
nosalle integer,
date date,
prix decimal(3,2),
PRIMARY KEY (nosalle, date, nospectacle),
FOREIGN KEY (nospectacle) REFERENCES SPECTACLE(nospectacle),
FOREIGN KEY (nosalle) REFERENCES SALLE(nosalle),
CHECK (prix>10 and prix<50)
);
Question
Insérer des données réalistes dans votre schéma afin de vérifier son bon fonctionnement.