4siq-base de donnees - gestion de zoo- application- rapport

20
Group: 4SIQ3 Assem Chelli Walid Benchaita Réalisé Par:

Upload: assem-chelli

Post on 11-Jun-2015

1.158 views

Category:

Documents


2 download

DESCRIPTION

1-construire la base de données en utilisant le SGBD MYSQL ou ORACLE-Création des tables correspondant aux relations définies dans le schémaRelationnel donné ci-dessus. Créer les contraintes.-Remplir les tables à partir de données42-Ecrire les scripts correspondant aux requêtes suivantes :(a) Pour chaque table de la base de données, permettre une sélection des tuples dontla clé a une valeur donnée (n’importe quelle valeur si le caractère ‘*’ est donnécomme valeur).(b) Afficher l’emploi du temps hebdomadaire global des gardiens (par secteur, parparcelle, par jour et par heure).(c) Afficher l’emploi du temps personnel par gardien selon le format jour, heure,secteur, parcelle.(d) quels sont les noms de secteurs et les noms et prénoms des gardiens qui apprécientce secteur et dans lequel le nombre de volontaires est inférieur ou égal au nombrede parcelles à surveiller ? (Dans le but d’affecter les gardiens aux secteurs qu’ilsapprécient lorsque leurs demandes peuvent être satisfaites)(e) la liste des animaux par espèce dont la taille ou le poids actuels correspondent auxvaleurs maximales relativement à chaque espèce. On veut afficher le code, le nom,la date de naissance, et les mesures de chaque animal(f) La liste de tous les gardiens (code, nom, prenom) et pour chacun d’eux le nombretotal d’heures de travail pour un mois donné (le mois doit être précisé à chaqueexécution).3 Ecrire une vue qui nous donne la liste des animaux individus nés au zoo a partir de l’année 2000 enprécisant toutes les informations les concernant.4 – Ecrire un trigger permettant de vérifier la contrainte suivante : seuls les employés appartenant a lacatégorie ‘gardien’ sont concernes par la surveillance des parcelles.5-Ecrire un trigger permettant de vérifier la contrainte suivante : chaque gardien ne surveille qu’unsecteur par jour mais change de parcelle toutes les heures.6-Ecrire un trigger permettant de vérifier la contrainte suivante : chaque gardien ne surveille qu’unsecteur par jour mais change de parcelle toutes les heures7-L’application doit également assurer les fonctions de mises à jour des tables

TRANSCRIPT

Page 1: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

Group: 4SIQ3

Assem Chelli

Walid Benchaita

Réalisé Par:

Page 2: 4siq-Base de donnees - Gestion de Zoo- Application- rapport
Page 3: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

1I. Index

I. IndexII. IntroductionIII. Travaille à faire

IV. Etapes du travailA. Création de la base et de ses tables :B. Remplissage des tables :C. Implémentation des requêtes :D. Vue :E. TriggersF. Les fonctions de mises à jour :

V. ResultatsVI. ConclusionVII. Bibliographie

Page 4: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

2II. Introduction :

L’informatique évolue vers le traitement de masses d’informations de plus en plus grandes. Dans ce contexte, les bases de données sont utilisées de façon intensive pour de nombreux domaines d’application tels que le domaine médical, les administrations ou les associations. Les applications concernées par l’utilisation d’un SGBD possèdent des caractéristiques différentes tant au niveau du volume de données concernées qu’au niveau de la complexité de ces données et des traitements informatiques à réaliser. Le langage SQL (Structured Query Language) supporté par la plupart des SGBD offre grâce a sa simplicité et au fait qu’il s’appuie sur le schéma conceptuel pour énoncer des requêtes en laissant le SGBD responsable de la stratégie d’exécution offre une multitude d'outils puissants capables de répondre aux besoins des administrateurs de bases de données et des développeurs .

Dans notre travail on a essayé de construire une base de données qui assurera un bon fonctionnement d’un zoo on vérifie les contraintes établi dans TP N°1 avec l’aide de quelque triggers.

On a choisi pour réaliser ce travail le SGBD MySQL 5.1. Implanter dans un environnement PHP qui est de loin le meilleur et le plus utilise dans ce domaine la.

Page 5: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

3

III. Travail à faire :

ETUDE DE CAS : GESTION D’UN ZOO

DEUXIEME PARTIE : REALISATION

Le contexte de ce travail est identique à celui du premier énoncé (Gestion d’un Zoo).

Soit le modèle relationnel suivant :

Employé (CODE-E, NOM, PRENOM, DATE-N, ADR, N°TEL, N°SS, NOM-MARITAL, CATEGORIE)

Contenant la liste des employés, avec N°SS signifie numéro de sécurité sociale unique pour chaque employé et catégorie qui correspond à (gardien, chef secteur, vétérinaire, infirmier, secrétaire,…)

Secteur (NOM_S, CODE-E-CHEF) contenant la liste des 8 secteurs du zoo.

Parcelle (NOM-S, N°PARCELLE) contenant la liste des parcelles du zoo.

Surveiller (CODE_E, NOM-S, N°PARCELLE, DATE, HEURE-DEB, HEURE-FIN)

Spécifiant l’emploi du temps des surveillances des parcelles par les gardiens.

Choix-Gardien (CODE_E, SECTEUR, TYPE-CHOIX) contenant la liste des choix des gardiens pour des secteurs (TYPE-CHOIX correspond à favoris et non appréciées).

Groupe (N°GR, NOM-ESPECE, NB-INDIVIDUS) contenant la liste des animaux représentés sous la forme de groupes.

Animal-Individu (CODE_ANIMAL, NOM-ANIMAL, NOM-ESPECE, DATE-N, GROUPE-SANGUIN, DATE-DECES, CODE-ANIMAL-MERE, CODE-ANIMAL-PERE) contenant la liste des animaux représentés sous forme d’individus.

Mesure-Animal (CODE_ANIMAL, DATE-MESURE, POIDS, TAILLE) contenant les différentes mesures des animaux.

Espèce (NOM-ESPECE, NOMBRE) regroupant toutes les espèces qui existent dans le zoo, une espèce correspond soit à un groupe (exemple : termites, souris blanches,…)

Soit à un ou plusieurs individus, NOMBRE correspond au nombre d’animaux de l’espèce qui sont dans le zoo.

Il vous est demandé de :

1-construire la base de données en utilisant le SGBD MYSQL ou ORACLE

-Création des tables correspondant aux relations définies dans le schéma

Relationnel donné ci-dessus. Créer les contraintes.

-Remplir les tables à partir de données

Page 6: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

42-Ecrire les scripts correspondant aux requêtes suivantes :

(a) Pour chaque table de la base de données, permettre une sélection des tuples dont la clé a une valeur donnée (n’importe quelle valeur si le caractère ‘*’ est donné comme valeur).

(b) Afficher l’emploi du temps hebdomadaire global des gardiens (par secteur, parparcelle, par jour et par heure).

(c) Afficher l’emploi du temps personnel par gardien selon le format jour, heure, secteur, parcelle.

(d) quels sont les noms de secteurs et les noms et prénoms des gardiens qui apprécient ce secteur et dans lequel le nombre de volontaires est inférieur ou égal au nombre de parcelles à surveiller ? (Dans le but d’affecter les gardiens aux secteurs qu’ils apprécient lorsque leurs demandes peuvent être satisfaites)

(e) la liste des animaux par espèce dont la taille ou le poids actuels correspondent aux valeurs maximales relativement à chaque espèce. On veut afficher le code, le nom, la date de naissance, et les mesures de chaque animal

(f) La liste de tous les gardiens (code, nom, prenom) et pour chacun d’eux le nombre total d’heures de travail pour un mois donné (le mois doit être précisé à chaque exécution).

3 Ecrire une vue qui nous donne la liste des animaux individus nés au zoo a partir de l’année 2000 en précisant toutes les informations les concernant.

4 – Ecrire un trigger permettant de vérifier la contrainte suivante : seuls les employés appartenant a la catégorie ‘gardien’ sont concernes par la surveillance des parcelles.

5-Ecrire un trigger permettant de vérifier la contrainte suivante : chaque gardien ne surveille qu’un secteur par jour mais change de parcelle toutes les heures.

6-Ecrire un trigger permettant de vérifier la contrainte suivante : chaque gardien ne surveille qu’un secteur par jour mais change de parcelle toutes les heures

7-L’application doit également assurer les fonctions de mises à jour des tables.

Page 7: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

5

Page 8: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

6IV. Etapes du travail :

A. Création de la base et de ses tables :

Création de la base :On a choisi comme nom de la base de la gestion du zoo : ZOO.

CREATE DATABASE ZOO;

Création des tables :La base zoo contient les tables suivantes ordonnées selon l’ordre de création :

EMPLOYE : composé de dix colonnes est a pour clé primaire le code de l’employé (Code_E)

Et la table contient toutes les informations nécessaires sur l’employé : Nom, Prénom, date et lieu de naissance, adresse, N° de téléphone, numéro de sécurité sociale et nom maritale pour les femmes mariées et la catégorie .

Code_E définit sur 4 caractère le premier est une lettre qui correspond a la catégorie de l’employé est le reste un numéro spécifique a chaque employé

SECTEUR : composé de deux colonnes le nom du secteur NOM_S est la clé primaire et le code de l’employé chef secteur

PARCELLE : composé de deux colonnes le nom du secteur NOM_S et le numéro de la parcelle N°PARCELLE qui compose a eut deux la clé primaire

SURVEILLER : compose de 6 champs le code de l’employé le secteur et le numéro de la parcelle qu’il surveille et la date et l’heure de début et de fin

CHOIX-GARDIEN : contient trois colonnes le code de l’employé et le secteur qu’il préfère ou déteste et le type de son choix qui ne prend que la valeur « + » ou « - »

GROUPE : composé de trois colonnes le numéro du groupe de l’animal N°GR et le NOM ESPECE et le nombre d’individu

ANIMAL_INDIVIDU: composé de huit colonnes est a pour clé primaire code de l’animal CODE_ANIMAL comprend toute les donnes sur l’animal son nom et le nom de son espèce qui est une clé étranger vers la table espèce sa date de naissance et de décès et le code animal de ces parents et le groupe sanguin qui prend les valeurs A B AB O

MESURE_ANIMAL contient 4 champs les deux première compose la clé primaire code animal et date de la mesure et le deux autre contiennes les mesures du poids et de la taille

ESPECE : cette table contient le nom de l’espèce et le nombre d’individu qui la composent

Page 9: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

7 Implémentation dans MySQL :## Structure de la table: Animal_Individu#CREATE TABLE Animal_Individu ( CODE_ANIMAL CHAR(6) NOT NULL PRIMARY KEY, NOM_ANIMAL VARCHAR(20) NOT NULL, NOM_ESPECE VARCHAR(30) NOT NULL REFERENCES ESPECE

( NOM_ESPECE ) ), DATE_NAI DATE(10) NOT NULL, GROUPE_SANGUIN CHAR(3) , DATE_DECES DATE(10) , CODE_ANIMAL_MERE CHAR(6) , CODE_ANIMAL_PERE CHAR(6) );# --------------------------------------------------------

## Structure de la table: Choix_gardien#CREATE TABLE Choix_gardien ( CODE_E CHAR(4) NOT NULL PRIMARY KEY REFERENCES Employé ( CODE_E ) ), NOM_S VARCHAR(20) NOT NULL REFERENCES SECTEUR ( NOM_S ) ) ON DELETE CASCADE ON UPDATE, TYPE_CHOIX CHAR(1) NOT NULL );# --------------------------------------------------------

## Structure de la table: Employé#CREATE TABLE Employé ( CODE_E CHAR(4) NOT NULL PRIMARY KEY DEFAULT '''''''""''''''', NOM VARCHAR(20) NOT NULL DEFAULT '''""''', PRENOM VARCHAR(30) NOT NULL DEFAULT '""', DATE_N DATE(10) NOT NULL DEFAULT '"0000-00-00"', LIEUN VARCHAR(20), ADR VARCHAR(60) NOT NULL DEFAULT '""', N°TEL INT(10), N°SS INT(9) NOT NULL DEFAULT '"0"', NOM_MARITAL VARCHAR(20) , CATEGORIE VARCHAR(15) NOT NULL DEFAULT '""' );CREATE UNIQUE INDEX Employe_N°SS ON Employé(N°SS);# --------------------------------------------------------

## Structure de la table: Espèce#CREATE TABLE Espèce ( NOM_ESPECE VARCHAR(30) NOT NULL PRIMARY KEY, NOMBRE INT(4) NOT NULL );# --------------------------------------------------------

## Structure de la table: Groupe#CREATE TABLE Groupe ( N°GR INT(3) NOT NULL PRIMARY KEY, NOM_ESPECE VARCHAR(20) NOT NULL REFERENCES ESPECE ( NOM_ESPECE ) ), NB_INDIVIDUS INT(4) NOT NULL );# --------------------------------------------------------

Page 10: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

8## Structure de la table: Mesure_animal#CREATE TABLE Mesure_animal ( CODE_ANIMAL CHAR(6) NOT NULL PRIMARY KEY REFERENCES ANIMAL_INDIVIDU ( CODE_ANIMAL ) ) ON DELETE CASCADE ON UPDATE , DATE_MESURE DATE(10) NOT NULL, POIDS FLOAT(5) NOT NULL, TAILLE FLOAT(5) NOT NULL );# --------------------------------------------------------

## Structure de la table: PARCELLE #CREATE TABLE PARCELLE1 ( NOM_S VARCHAR(20) NOT NULL , N°PARCELLE INT(2) NOT NULL , PRIMARY KEY (NOM_S,N°PARCELLE) );# --------------------------------------------------------

## Structure de la table: SECTEUR#CREATE TABLE SECTEUR ( NOM_S VARCHAR(20) NOT NULL PRIMARY KEY DEFAULT '""' REFERENCES SECTEUR ( NOM_S ) ) ON DELETE CASCADE ON UPDATE , CODE_E_CHEF CHAR(4) NOT NULL DEFAULT "" REFERENCES Employé ( CODE_E ) ) ;# --------------------------------------------------------

## Structure de la table: Surveiller#CREATE TABLE Surveiller ( CODE_E CHAR(4) NOT NULL REFERENCES Employé ( CODE_E ) ) ON DELETE CASCADE ON UPDATE CASCADE , NOM_S VARCHAR(20) NOT NULL REFERENCES SECTEUR ( NOM_S ) ) ON DELETE CASCADE ON UPDATE, N°PARCELLE INT(2) NOT NULL REFERENCES SECTEUR ( N°PARCELLE) ) ON DELETE CASCADE ON UPDATE, DATE DATE(10) NOT NULL, HEURE_DEB INT(2) NOT NULL, HEURE_FIN INT(2) NOT NULL ) , PRIMARY KEY(CODE_E,NOM_S,N°PARCELLE);# --------------------------------------------------------

Page 11: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

9 Création des contraintes : Pour assurer que les contraintes sont vérifiées il faut créer des triggers et les exécute avant

l’insertion des données. Dans ce TP on a fait trois triggers qui vérifient tous les contraintes l’un après l’insertion d’un paquet et l’autre après la mise à jour dans la table paquet

Les triggers travaillent comme suite :

Vérifier que seul les employés appartenant a la catégorie gardiens sont concernés par la surveillance des parcelles pour cela on doit refuser d’insérer un code employé d’un employé qui n’appartient pas a cette catégorie dans la table SURVEILLE

use zoo;

delimiter $$

create trigger surveillance

before update or insert on surveiller

for each row

begin

declare erreur tinyint;

if ( select categorie from employe where code_e= new.code_e)<>’gardien’

then set erreur = " l’employé doit être un gardien";

end if;

Page 12: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

10Permettre la mise a jour de la table ESPECE a chaque modification ou insertion dans la table ANIMAL_ANDIVIDU pour cela on doit surveiller la modification de la case DATE_DECES

Pour diminuer le nombre ou augmenter le nombre a chaque insertion

use zoo;

delimiter $$

create trigger majA

after insert on animal_individu

for each row

begin

update espece

set nombre = nombre +1

where nom_espece = :new.nom_espece

use zoo;

delimiter $$

create trigger majI

after update on animal_individu

for each row when old.date_deces<>null

begin

update espece

set nombre = nombre -1

where nom_espece = :new.nom_espece

S’assurer que chaque gardien ne surveille qu’un secteur par jour et change de parcelle toutes les heures pour la première partie le problème

Page 13: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

11B. Remplissage des tables : INSERT INTO `zoo`.`choix_gardien` (`Code_E` ,`secteur` ,`TYPE_Choix` )

VALUES ('cd1', 'sect1', 'favori'), ('cd1', 'sect2', 'non_apprecie'), ('cd3', 'sect3', 'favori'), ('cd4', 'sect4', 'non_apprecie'), ('cd4', 'sect5', 'favori');

INSERT INTO `zoo`.`employe` (`Code_E` ,`NOM` ,`prenom` ,`date_n` ,`lieu_n` ,`adr` ,`ntel` ,`nss` ,`nom_marital` ,`categorie` )VALUES

('cd1', 'nom-emp1', 'prenom-emp1', '1984-01-18', 'lieu_n_emp1', 'adr_emp1', '0001', '5501', NULL , 'gardien'), ('cd2', 'nom-emp2', 'prenom-emp2', '1980-08-27', 'lieu_n_emp2', 'adr_emp2', '0002', '5502', NULL , 'gardien'), ('cd3', 'nom-emp3', 'prenom-emp3', '1973-05-25', 'lieu_n_emp3', 'adr_emp3', '0003', '5503', NULL , 'chef secteur'),('cd4', 'nom-emp4', 'prenom-emp4', '1985-10-01', 'lieu_n_emp4', 'adr_emp4', '0004', '5504', NULL , 'directeur'),('cd5', 'nom-emp5', 'prenom-emp5', '1984-03-29', 'lieu_n_emp5', 'adr_emp5', '0005', '5505', 'nom_marital_5', 'chef

secteur');

INSERT INTO `zoo`.`espece` (`nom_espece` ,`nombre` )VALUES ('espece1', '2'),

('espece2', '0'), ('espece3', '0'), ('espece4', '0'), ('espece5', '0');

INSERT INTO `zoo`.`groupe` (`n_gr` ,`nom_espece` ,`nb_indevidus` )VALUES ('1', 'espece1', '10'),

('2', 'espece2', '2'),('3', 'espece3', '0'),

('4', 'espece4', '0’), ('5', 'espece5', '5') ;

INSERT INTO `zoo`.`parcelle` (`nom_s` ,`n_parcelle` )VALUES ('sect1', '1'),('sect1', '2'), ('sect1', '3'), ('sect2', '1'),('sect2', '2');

INSERT INTO `zoo`.`secteur` (`Nom_s` ,`code_e_chef` )VALUES ('sect1', 'cd1'),

('sect2', 'cd3'),('sect3', 'cd2'),('sect4', 'cd2'),

('sect5', '')

Page 14: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

12

C. Implémentation des requêtes :

Emploie de temps hebdo :

SELECT `Code_E` , `n_parcelle` , `heure_deb` , dateFROM `surveiller`WHERE `Nom_s` = $sectORDER BY date, `heure_deb` ASC

Emploi personnel :

SELECT `Nom_s` , `n_parcelle` , `date` , `heure_deb`FROM `surveiller`WHERE `Code_E` = 'cd1'AND `date`BETWEEN '2009-02-16'AND '2009-06-14'ORDER BY `date` , Nom_s ASC

SELECT nom, prenom, secteurFROM `employe` AS E, choix_gardien AS CWHERE E.`Code_E` = C.Code_EAND (

SELECT count( `n_parcelle` ) FROM `parcelle` WHERE nom_s = C.secteur) >= ( SELECT count( `secteur` ) FROM choix_gardienWHERE `TYPE_Choix` = 'favori'GROUP BY (secteur)HAVING secteur = C.secteur ) LIMIT 0 , 30

SELECT `Code_E`,`NOM`,`prenom`,sum(`heure_fin`-`heure_deb`) FROM `employe` natural join surveiller WHERE `categorie`='gardien' and date like '%-05-%' group by Code_E;

Page 15: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

13

D. Vue :CREATE VIEW vue AS SELECT * FROM `animal_individu` WHERE date_n LIKE '20%-%-%'

E. Triggers

F. Les fonctions de mises à jour :(dans le site web)

Page 16: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

14

Page 17: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

15

V. Resultats

Page 18: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

16VI. Aperçue

Page 19: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

17

VII. Conclusion

Les travaux pratiques dans la base de données sont très utiles car le traitement des ordres SQL est un peu différent entre la théorie et le pratique. Ce TP nous permet de manipuler quelques astuces de MySQL pour réaliser un travail à l’aide de ce SGBD, ainsi qu’il nous permet de bien retenir les astuces étudiées en cours

Page 20: 4siq-Base de donnees - Gestion de Zoo- Application- rapport

18VIII. Bibliographié

mysql - Paul Dubois<!--http://www-lsr.imag.fr/- Herve.Martin-->