Exam on SQL Queries and PL/SQL Programs

Database Management, SQL, PL/SQL · exam

Voir tous les documents en bases de données

EXAMEN

Semestre : 1 2

Session : Principale Rattrapage

Module : SGBD

Enseignants : Équipe SGBD

Classes : 3A

Documents autorisés : OUI NON Nombre de pages : 02

Date : 17-05-2018 Heure : 10h30 Durée : 01h30

Nous souhaitons créer une application qui permet la gestion d’audience de diverses chaines

télévisées. Une partie du schéma relationnel de l’application est décrite ci-dessous :

CHAINETV (idCH, nomCH, typeCH)

ANIMATEUR (idA, nomA, nationalité, gender)

Publicité

PROGRAMME (idP, #idCH, #idA, titre, typeP, périodicité, jour, heure_debut, durée)

SONDAGE (heureDeb, heureFin, dateS, #(idP, idCH), audimat)

Remarques :

  • La périodicité peut être (quotidienne, hebdomadaire).
  • Le type de chaine, typeCh, peut être (ipTV, TNT, satellite).
  • Le type de programme, typeP, peut être (politique, sport, news, documentaire,

divertissement).

  • L’Audimat correspond au nombre de téléspectateurs qui regardent le programme à un

moment donné.

  • La durée d’un programme est exprimée en minutes.
  • On suppose qu’un programme n’est diffusé qu’une seule fois par jour.

Travail demandé : Écrire les requêtes SQL et programmes PL/SQL permettant de :

1. Créer une vue V_PROG_HEBD qui permet d’afficher le titre du programme, le nom de

l’animateur ainsi que le nom de la chaine pour les programmes dont la périodicité est

hebdomadaire. (2 pts)

Publicité

2. Créer une procédure stockée PS_AUD_PROG qui permet d’afficher le total des audimats

pour chaque type de programme. (2 pts)

3. Créer une fonction stockée FN_NB_PROG(p_idA number) qui permet de retourner le

nombre de programmes présentés par l’animateur dont l’identifiant est donné en paramètre.

Si l’animateur n’existe pas la fonction doit retourner -1. (2 pts)

1

4. Créer une procédure stockée PS_NOM_PROG qui permet d’afficher pour chaque

animateur, ayant plus de deux programmes, son nom et sa nationalité ainsi que les titres,

types et périodicité des programmes qu’il présente. Utiliser la fonction FN_NB_PROG. (3

pts)

5. Créer une fonction stockée FN_POUR_AUDIMAT (p_idCH number, p_date date) qui

retourne, pour une date donnée, le pourcentage de l’audimat (voir encadré ci-dessous) d’une

Publicité

chaine TV dont l’identifiant est donné en paramètre. Si la chaine TV n’existe pas la fonction

doit retourner -1. (3 pts)

Le pourcentage de l’audimat d’une chaine = audimat total chaine / audimat total

6. Créer une procédure stockée PS_CLASS_CHAINE (p_date date) qui affiche, pour une

date donnée, une liste numérotée des noms des chaines selon un ordre décroissant du

pourcentage de leur audimat. Utiliser la fonction FN_POUR_AUDIMAT. (2 pts)

7. Créer une procédure stockée PS_TOP_PROG (p_heureDeb number, p_heureFin

number, p_date date) qui permet d’afficher le nom du(des) programme(s) qui a(ont)

réalisé l’audimat le plus élevé pour la plage horaire et la date indiquées en paramètre.

Traiter les exceptions suivantes :

  • L’heure de fin doit être supérieure à l’heure de début
  • La date ne doit pas être supérieure à la date d’hier. (3 pts)

Publicité

8. Créer un trigger TRIG_PERIODICITE qui permet de vérifier la valeur de la colonne jour

lors de l’insertion au niveau de la table PROGRAMME :

a. si la périodicité est ‘quotidienne’ la colonne jour doit être nulle.

b. si la périodicité est ‘hebdomadaire’, la colonne jour doit avoir une valeur, sinon,

l’insertion doit être bloquée. (3 pts)

Bon courage

2