next up previous
Next: Insertion de données Up: Création d'un schéma relationnel Previous: Création d'un schéma relationnel

Création des tables

Créez les tables du schéma 'Agence de voyages', vues en cours, et rappelées ci-dessous.

Attention à bien définir les clés primaires et étrangères. Voici les autres contraintes portant sur ces tables.
1.
Les données capacité, lieu, nom, ville, solde et nbPlaces doivent toujours être connues.
2.
Les montants (prix, tarif et solde) ont une valeur par défaut à 0.
3.
Il ne peut pas y avoir deux stations dans le même lieu et la même région.
4.
Les régions autorisées sont: 'Ocean Indien', 'Antilles', 'Europe', 'Ameriques' et 'Extreme Orient'.
5.
La destruction d'une station doit entraîner la destruction de ses activités et de ses séjours.

Conseil: donnez des noms à vos contraintes CHECK. Il est possible aussi de donner des noms aux contraintes FOREIGN KEY et PRIMARY KEY.


Solution :: les NOT NULL ne sont pas necessaires pour les PRIMARY KEY.

CREATE TABLE Station (nomStation VARCHAR2 (30),
                      capacite   NUMBER (10) NOT NULL,
	              lieu       VARCHAR2(30) NOT NULL,
                      region     VARCHAR2 (30),
                      tarif      NUMBER (10,2) DEFAULT 0,
	              CONSTRAINT cle_station PRIMARY KEY (nomStation), 
                      CONSTRAINT cle_lieu_region UNIQUE (lieu, region),
	              CONSTRAINT nom_region
                         CHECK (region IN ('Ocean Indien', 
					'Antilles', 'Europe',
					'Ameriques', 'Extreme Orient'))
                    );

CREATE TABLE Activite (nomStation   VARCHAR2 (30),
                       libelle      VARCHAR2(30),
                       prix         NUMBER (10,2) DEFAULT 0,
                       PRIMARY KEY (nomStation, libelle),
                       FOREIGN KEY (nomStation) REFERENCES Station
                         ON DELETE CASCADE
                       );
CREATE TABLE Client (id NUMBER (10),
                      nom VARCHAR2(30) NOT NULL,
                      prenom VARCHAR2 (30),
                       ville VARCHAR2 (30) NOT NULL,
                       region VARCHAR2(30),
                        solde NUMBER (10,2) DEFAULT 0 NOT NULL,
                         PRIMARY KEY (id)
                   );  

CREATE TABLE Sejour  (idClient NUMBER (10),
                       station VARCHAR2 (30),
                       debut NUMBER (10),
                       nbPlaces  NUMBER (4) NOT NULL,
                        PRIMARY KEY (idClient, station, debut),
                        FOREIGN KEY (idClient) REFERENCES Client,
                        FOREIGN KEY (station) REFERENCES Station
                             ON DELETE CASCADE);




Philippe Rigaux
2000-02-03