• Aucun résultat trouvé

Travaux Pratiques et Dirigés de Bases de Données n˚ 3

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Pratiques et Dirigés de Bases de Données n˚ 3"

Copied!
3
0
0

Texte intégral

(1)

Année 2019/2020 Deuxième semestre

Département INFORMATIQUE DUT année spéciale

Page 1 Bases de données – TD 3

Travaux Pratiques et Dirigés de Bases de Données n˚ 3

PL/SQL : procédures stockées, déclencheurs

Les exercices de ce TD font référence à la base de données « Vidéothèque ».

1. Ecrire, compiler et stocker une fonction nbreFilms qui, étant donné un réalisateur (identifié par son numéro d’individu), renvoie le nombre total de films qu’il a tourné.

Testez la fonction nbreFilms avec le réalisateur numéro 1091.

2. Transformer le bloc PL/SQL de la question 5.c) du TD 2 en une procédure stockée majBonus, qui prend deux paramètres entiers nbre1 et nbre2. Attention, votre procédure doit mettre à jour l’attribut bonus de la table tableBonus, et ne doit rien afficher.

Testez votre procédure avec les valeurs 3 et 4.

3. Statistiques pour la Vidéothèque

a. Ecrire et compiler une fonction stockée Pourcentage, qui prend en paramètre deux entiers n1

et n2, et qui retourne le nombre réel (n1 / n2)*100 arrondi à deux chiffres après la virgule.

b. Ecrire et compiler une fonction stockée nbrExSupport, qui prend en paramètre un numéro de film n (de type numFilm dans ens2004.exemplaire) et un code de support c pour un exemplaire de film (de type codeSupport dans ens2004.exemplaire), et qui retourne le nombre d’exemplaires du film n dont le support est c. En outre, si le paramètre c vaut

« ANY », la fonction nbrExSupport doit retourner le nombre d’exemplaires du film n quel que soit leur support (il est demandé de gérer cela par une exception).

c. Créer une table statistiques (numFilm, nbrEx, pctgeDVD, pctgeVHS) où nbrEx est un entier et pctgeDVD, pctgeVHS sont des réels.

d. Ecrire et compiler une procédure remplirStat qui remplit la table statistiques, que l’on sup- posera initialement vide. Une fois la procédure remplirStat exécutée, la table statistiques doit donner pour chaque film le nombre d’exemplaires de ce film, ainsi que le pourcentage d’exemplaires de type DVD et de type VHS.

4. Afin d’améliorer le service et la gestion de son stock, la vidéothèque souhaite avoir à sa disposition à tout moment une série de données statistiques relatives à sa base. Créer un package statistics qui ras- semble les procédures et fonctions permettant de savoir :

a. Le nombre de films pour lesquels on ne possède aucun exemplaire.

b. Le pourcentage d’exemplaires pour lesquels on n’a jamais signalé de problème.

5. On crée une table trace(numLog, message), où numLog est un entier et message une chaîne de carac- tères. Soit nbValLog la fonction qui compte le nombre de lignes de la table trace définie par :

CREATE OR REPLACE FUNCTION nbValLog RETURN INTEGER AS nbval INTEGER;

BEGIN

SELECT COUNT(*) INTO nbval FROM TRACE; RETURN nbval;

END;

/

(2)

Année 2019/2020 Deuxième semestre

Département INFORMATIQUE DUT année spéciale

Page 2 Bases de données – TD 3

On considère maintenant les quatre déclencheurs suivants :

Déclencheur TRIG_1 Déclencheur TRIG_2

CREATE TRIGGER TRIG_1 BEFORE INSERT ON LOCATION FOR EACH ROW

BEGIN

INSERT INTO TRACE

VALUES(nbValLog+1,'Trigger 1');

END;

/

CREATE TRIGGER TRIG_2 BEFORE INSERT ON LOCATION

BEGIN

INSERT INTO TRACE

VALUES(nbValLog+1,'Trigger 2');

END;

/

Déclencheur TRIG_3 Déclencheur TRIG_4

CREATE TRIGGER TRIG_3 AFTER INSERT ON LOCATION FOR EACH ROW

BEGIN

INSERT INTO TRACE

VALUES(nbValLog+1,'Trigger 3');

END;

/

CREATE TRIGGER TRIG_4 AFTER INSERT ON LOCATION

BEGIN

INSERT INTO TRACE

VALUES(nbValLog+1,'Trigger 4');

END;

/

Lors d’une insertion dans la table location, quelles valeurs sont ajoutées dans la table trace ? Que peut-on en déduire sur l’ordre d’activation des déclencheurs d’une même table, en fonction de leurs types ?

6. Créer un déclencheur qui empêche la suppression d’une ligne de la table location par une personne non autorisée, et qui envoie un message d’alerte à l’écran, comme par exemple « Attention, utilisa- teur non autorisé ! ».

7. Ecrire un déclencheur qui, suite à la modification d’une ligne de la table location : a. Refuse la suppression si la date d’envoi de l’exemplaire était renseignée ;

b. Refuse la mise à jour (ou insertion) qui aboutit à une location dont on connait la date de re- tour et dont on ignore la date d’envoi ;

c. Dans tous les autres cas, fait afficher un message précisant ce qui a été fait et pour quel login, numéro d’exemplaire et date de location (dans le cas d’une mise à jour les an- ciens et nouveaux valeurs de ce trois champs doivent être affichés).

8. On souhaite définir un déclencheur trigBonus qui après chaque insertion dans la table location, met à jour d’une part l’attribut nbrExLoues, et d’autre part l’attribut bonus de la table tablebonus ; en particulier, trigBonus doit mettre à jour le bonus selon les règles de la question 2 ci-dessus.

Afin de répondre à la première partie de la question précédente, concernant la mise à jour de nbrExLoues, on pourrait souhaiter écrire le déclencheur suivant :

CREATE OR REPLACE TRIGGER trigBonus AFTER INSERT ON LOCATION FOR EACH ROW

DECLARE

nbre TABLEBONUS.nbrExLoues%type;

BEGIN

SELECT COUNT(*) INTO nbre FROM LOCATION WHERE login = :NEW.login;

UPDATE TABLEBONUS

(3)

Année 2019/2020 Deuxième semestre

Département INFORMATIQUE DUT année spéciale

Page 3 Bases de données – TD 3

SET nbrExLoues = nbre+1 WHERE login = :NEW.login;

END;

/

a. Que se passe-t-il avec ce déclencheur, lors d’une insertion dans la table location ? Pourquoi ne fonctionne-t-il pas comme on l’attend ? Comment s’appelle ce phénomène ?

b. Ecrire « correctement » le déclencheur trigBonus.

Références

Documents relatifs

Un adjectif qualificatif peut être soit épithète s'il qualifie un nom, soit attribut s’il donne des informations sur un sujet?. L’adjectif qualificatif

Sur le secondaire du tore du collier (tension U C1 aux bornes du condensateur C1) se trouve une tension alternative sinusoïdale d’amplitude 12V (tension provenant de

9) Entreprises possédant des participations dans YaKaCliquer et dans Vroom ? 10) Entreprises possédant des participations dans YaKaCliquer et pas dans Vroom ? 11)

Par délibération du 14 mars 2022, et conformément à ses engagements pris en application du plan d’action pour les mobilités actives, du plan métropolitain santé environnement et

En utilisant une loi de support [ln K , +∞ [, quel autre estimateur d’échantillonnage préférentiel auriez- vous pu proposer?.

Choix 1 : Ce n’est pas vous, « vous n’aviez pas le temps » Le Chasseur du cœur ayant déclenché l’événement perd 1 point.. Choix 2 : Ce n’est pas vous, « vous auriez fait

La Communauté de communes a reçu une demande spontanée de la société BEFUN pour l’installation d’une tour avec des toboggans gonflable en complément du parc aquatique BE FUN et

En sa qualité d’exploitant de l’ensemble des installations de signalisation lumineuse tricolore situées sur son territoire MPM se réserve le droit de modifier