Vous êtes sur la page 1sur 3

Direction Rgionale Tensift Atlantique Marrakech

Examen de Fin de Module, Formation Initiale


Anne 2014 -2015
SESSION JAVIER 2015

Filire : TDI
Niveau : TS
Intitul du module :

Dure : 2h00

Systme de gestion de BD II

Barme: 40 / 40

I) : Partie Thorique (1/40 points)


1) Citer les trois types de triggers dans lSQL server. (1pt)
II) : Partie Pratique (39/40 points)
Soit le schma relationnel suivant :
Service (Num_serv, Nom_serv, Date_creation)
Employe (Matricule, Nom, Prenom, DateNaissance, Adresse, Salaire,Fonction, Num_serv#)
Projet (Num_prj, Nom_prj, Lieu, nbr_limite_taches,Num_serv#)
Tache (Num_tach, Nom_tache, date_debut, date_fin, cout, Num_prj#)
Travaille (Matricule#,Num_tache#, Nombre_heure)
Questions :
A. Ecrire les fonctions suivantes (3pts):
1. Fonction nomme fn_personnel _rendement
6 pts
Permettant de calculer et renvoyer le taux de rendement dun employ donn pour un projet donn
en paramtre.
Rendement = somme (nombre des heures de travailles) x 10 / somme (cot des taches)
B. Grer les exceptions (3pts):
1. Ajouter les messages suivants au catalogue systme.
Avertissement N 60000 :
Langue franaise : opration de type opration bien effectue par lutilisateur utilisateur
courant de BD la date de date opration .
Langue anglaise: the type of operation operation has been performed by the user
current user of the database on the date of date of operation .
Le type de lopration est soit : ajout, modification ou suppression
C. Ecrire les procdures stockes suivantes (8pts):
1. Procdure nomme ps_Projet_supprimer
Permettant de supprimer en cascade un projet dont le numro est pass en paramtre (supprimer
toutes les lignes correspondantes de la table travaille, tache puis projet.
EFP: ISTA NTIC SYBA

Correction disponible sur http://www.exelib.net/

Page 1/3

opration russite : exception journalise N60000 (valeur de retour = 0).


opration non termine : exception journalise avec le texte derreur, la date et lutilisateur
courant.
Penser encapsuler les requtes dans une transaction.

2. Procdure nomme ps_Tache_ajouter


8 pts
Accepte en paramtre le numro de projet, le nom dune tache, sa dure et le cout (par dfaut = null),
puis ajouter une ligne la table tache.
La procdure doit effectuer le traitement suivant :

Renvoyer -1 si le numro de projet nexiste pas.


Si le numro du projet existe, ajouter une tache tel que :
numro tache = max(num_tach)+1
date_debut =
sil existe dj une tache pour ce projet alors la date de dbut est :
= max (date_fin ) pour le projet pass en paramtre + 1 jour
si non (cest la 1re tache pour ce projet) la date de dbut est :
= la date daujourdhui
Date_fin =date_debut +Dure (j)
Si lajout est effectu avec succs, lever lexception N60000. (la procdure renvoie 0 avec le
numro de tache ajout).
Si la base de donnes renvoie une erreur, la procdure renvoie -2.

8 pts
3. Procdure nomme ps_Personnel_augmenter
Qui permet daugmenter le salaire des trois employs les plus rentables qui ont particip la
ralisation dun projet pass en paramtre selon la rgle suivante :
lemploy au 1er rang : augmentation de 2%
lemploy au 2me rang : augmentation de 1%
lemploy au 3me rang : augmentation de 0.5%
Et de renvoyer le montant total daugmentation.
N.B : lemploy le plus rentable est celui qui a le plus grand taux de rendement.
D. Ecrire les dclencheurs suivants (13pts):
1. trigger nomm tg_salaire_log

5 pts

a. Donner le script permettant de crer la table suivante :


SalaireLog (Num_auto, matricule, date_modification, ancien_salaire, nouveau_salaire, taux,
utilisateur)
b. Crer un trigger pour ajouter une ligne dhistorisation chaque modification du salaire.
Taux = (nouveau_salaire ancien_salaire) / ancien_salaire.
N.B :noublier pas de traiter le cas de la mise jour par lot.
2. trigger nomm tg_tache_ajouter
Qui permet de contrler le nombre des taches ajout (le nombre des taches dun projet doit tre
toujours inferieur la valeur du champ nbr_limite_taches de ce projet.
3. trigger nomm tg_projet_supprimer
Permettant de supprimer touts les travaux et toutes les taches la suppression dun projet
(suppression en cascade dun projet).
4. trigger nomm tg_ projet_ajouter

EFP: ISTA NTIC SYBA

8 pts

Crer ce trigger pour ajouter N taches linsertion dun nouveau projet comme suite:
o les noms des taches sont : tache 1, tache 2, tache 3,
Correction disponible sur http://www.exelib.net/

Page 2/3

o
o

la dure est fixe 40 jours


le cout est null.

N.B : N est gale la valeur du champ nbr_limite_taches.


Num_tach

Nom_tach

Date_debut

Date_fin

Cout

Num_prj

Max(num_tach)+1

Tache 1

Date systme

Date systme +40j

Null

Num_prj insr

Max(num_tach)+2

Tache 2

Date systme +41j

Date systme +81j

Null

Num_prj insr

Max(num_tach)+3

Tache 3

Date systme +82j

Date systme +102j

Null

Num_prj insr

Date systme +
(N-1)x41j

Date systme +
(N-1)x41j +40

Null

Num_prj insr

Max(num_tach)+N Tache N

EFP: ISTA NTIC SYBA

Correction disponible sur http://www.exelib.net/

Page 3/3