La base de données

L'analyse ne sera pas présentée ici. Nous nous contenterons de donner la structure de la base.

MLD

MLD de la base Camping

Les tables

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)
        );