L'analyse ne sera pas présentée ici. Nous nous contenterons de donner la structure de la base.
La table ville contient les renseignements sur les villes :
CREATE TABLE ville (
codepostal VARCHAR PRIMARY KEY,
ville VARCHAR
) ;
La table rue contient les informations sur les rues, elle se réfère à la table ville :
CREATE TABLE rue (
coderue INT PRIMARY KEY,
nomrue VARCHAR,
codepostal VARCHAR,
CONSTRAINT rue_codepostal_fk
FOREIGN KEY (codepostal)
REFERENCES ville(codepostal)
);
La table personne rassemble les informations sur les personnes, clientes ou non :
CREATE TABLE personne (
codepersonne INT PRIMARY KEY,
nom VARCHAR NOT NULL,
prenom VARCHAR,
numerodanslarue VARCHAR,
refrue INT,
tel VARCHAR,
fax VARCHAR,
email VARCHAR,
CONSTRAINT personne_refrue_fk
FOREIGN KEY (refrue)
REFERENCES rue(coderue)
);
La table confort liste les éléments de confort (douche, four, etc.) qui peuvent être disponibles dans les différents hébergements ; c'est la table lien_hebergement_confort qui permet de faire le lien entre les hébergements et les éléments de confort :
CREATE TABLE confort (
codeconfort INT PRIMARY KEY,
typeconfort VARCHAR NOT NULL
);
La table typehebergement rassemble les différents types d'hébergement (camping, dortoir, etc.) :
CREATE TABLE typehebergement (
codetypehebergement INT PRIMARY KEY,
typehebergement VARCHAR NOT NULL
);
La table typelocation rassemble les différents types de location (à la journée, à la semaine, etc.) :
CREATE TABLE typelocation (
codetypelocation INT PRIMARY KEY,
typelocation VARCHAR NOT NULL
);
La table tariflocation rassemble les différents tarifs de location en fonction de la durée, du type d'hébergement, etc.) :
CREATE TABLE tariflocation (
reftypelocation INT,
reftypehebergement INT,
journee NUMERIC(5,2),
personne NUMERIC(5,2),
PRIMARY KEY (reftypelocation,reftypehebergement),
CONSTRAINT tariflocation_reftypehebergement_fk
FOREIGN KEY (reftypehebergement)
REFERENCES typehebergement(codetypehebergement),
CONSTRAINT tariflocation_reftypelocation_fk
FOREIGN KEY (reftypelocation)
REFERENCES typelocation(codetypelocation)
);
La table tarifvehicule définit le montant des redevances en fonction des véhicules :
CREATE TABLE tarifvehicule (
codevehicule INT PRIMARY KEY,
vehicule VARCHAR,
tarif NUMERIC(5,2) NOT NULL
);
La table hebergement contient la liste de tous les hébergements disponibles :
CREATE TABLE hebergement (
codehebergement INT PRIMARY KEY,
positionsurleplan VARCHAR NOT NULL,
reftypehebergement INT NOT NULL,
nbreplaces INT NOT NULL,
CONSTRAINT hebergement_reftypehebergement_fk
FOREIGN KEY (reftypehebergement)
REFERENCES typehebergement(codetypehebergement)
);
La table lien_hebergement_confort fait le lien entre les hébergements et les éléments de confort disponibles :
CREATE TABLE lien_hebergement_confort (
refhebergement INT,
refconfort INT,
PRIMARY KEY (refhebergement,refconfort),
CONSTRAINT lienhebconfort_refhebergement_fk
FOREIGN KEY (refhebergement)
REFERENCES hebergement(codehebergement),
CONSTRAINT lienhebconfort_confort_fk
FOREIGN KEY (refconfort)
REFERENCES confort(codeconfort)
);
La table sejour rassemble tous les renseignements sur les séjours effectués ou réservés par les clients :
CREATE TABLE sejour (
codesejour INT PRIMARY KEY,
debut DATE,
fin DATE,
refhebergement INT,
refvehicule INT,
CONSTRAINT sejour_refvehicule_fk
FOREIGN KEY (refvehicule)
REFERENCES tarifvehicule(codevehicule),
CONSTRAINT sejour_refhebergement_fk
FOREIGN KEY (refhebergement)
REFERENCES hebergement(codehebergement)
);
La table lien_sejour_personne fait le lien entre les séjours (effectués ou réservés) et les personnes (clients) :
CREATE TABLE lien_sejour_personne (
refsejour INT,
refpersonne INT,
PRIMARY KEY (refsejour,refpersonne),
CONSTRAINT liensejourpersonne_refsejour_fk
FOREIGN KEY (refsejour)
REFERENCES sejour(codesejour),
CONSTRAINT liensejourpersonne_refpersonne_fk
FOREIGN KEY (refpersonne)
REFERENCES personne(codepersonne)
);