Vous êtes sur la page 1sur 3

Université CADI AYAAD

FST – Marrakech
IRISI S2
Mini projet PL/SQL
Gestion de Mediatek

La conception :
L'association MediaTek fait appel à vous afin d'automatiser ses tâches de marketing (analyse
des ventes, analyse des profils des clients) et commerciales (facturation). L'objectif est de réaliser
une base de données permettant de gérer les clients, produits, et factures.
Les règles suivantes doivent être respectées dans la conception du schéma :
 Une facture comporte un ou plusieurs produits.

 Un produit peut paraître dans plusieurs factures.

 Une facture est associée à un seul client.

 Un client peut établir plusieurs factures.

 On enregistre la quantité en stock de chaque produit.


1- Etablir le modèle conceptuel.
2- Dériver le modèle relationnel.
3- Implémenter votre base de données, et insérer des tuples pour les tests.
4- Écrivez et exécutez la requête permettant d'afficher toutes les lignes de facture, avec pour
chacune :
 le numéro de la facture,

 les nom et prénom du client,

 la désignation et le prix du produit,

 et la quantité achetée.

Les vues:
Le service après-vente (SAV) est instruit à se comporter vis à vis des clients, selon leur catégorie:
 "VIP" si le chiffre d'affaire pour ce client est supérieur à 500 euros,

 "client ordinaire" si le chiffre d'affaire est compris entre 50 et 500 euros,

 et "client à potentiel" si le chiffre d'affaire est inférieur à 50 euros.

Le mécanisme de vue est fréquemment utilisé pour masquer la complexité d'un schéma de BD
aux yeux d'opérateurs nécessitant un schéma simple (on parle de schéma externe).
Dans notre cas, les opérateurs du SAV désirent avoir la catégorie du client au téléphone grâce à
une instruction très simple :
select * from v_chiffre_affaire where code_client=# ;
1- Écrivez la requête SQL qui crée la vue "v_chiffre_affaire" permettant de répondre au besoin
des opérateurs du service après-vente.

Fonctions stockées :
À la fin de chaque année, le fournisseur des produits du projet MediaTek demande à l'association
un inventaire sur les produits vendus. Cet inventaire lui est envoyé par e-mail pour analyse et
traitement. L'information demandée est la suivante : donner pour chaque produit, sa désignation,
son prix actuel, et une mention sur la demande :
 demande "forte" si le nombre d'articles vendus dépasse 15,

 demande "moyenne" si le nombre d'articles vendus est compris entre 11 et 15,

 et demande "faible" sinon.


1- Écrire une fonction stockée qui retourne la valeur de demande (forte, moyenne, faible) en
fonction d'un numéro de produit.
2- Écrire une requête SELECT qui utilise cette fonction pour présenter la liste des produits avec
la demande.

Les curseurs :
Afin d'affiner l'analyse du profil de chaque client, le service marketing souhaite avoir un état
pour chaque client avec le nombre de ses factures et son chiffre d'affaire total.
1- Écrivez deux fonctions stockées qui prendront en argument un numéro de client, et
retourneront sous forme de number le nombre de factures et le chiffre d'affaire, respectivement.
2- Écrivez un programme PL/SQL anonyme qui affiche pour le client numéro 1 le nombre de
factures et le chiffre d'affaire.
3- Écrivez un second programme PL/SQL qui affiche pour chaque client son nombre de factures
et son chiffre d'affaire.
4- Transformez le bloc anonyme en procédure. Testez cette procédure.

Les triggers :
Un ensemble de règles de gestion est défini afin de gérer le stock des produits du projet
MediaTek. La politique suivante a été admise :
1. après chaque vente, la quantité vendue est soustraite de la quantité disponible indiquée dans
une colonne de la table des produits,
2. si cette quantité (disponible) est inférieure à un "seuil" alors insérer un avertissement dans une
table de journalisation avec la date du jour, le numéro de produit, et stock restant après mise à
jour.

- Créer un déclencheur permettant de mettre à jour la quantité disponible dans la table produit à
chaque insertion dans la table ligne facture (traitement du point 1).
- Testez votre trigger TR_STOCK_AUDIT en supprimant et en réinsérant les données des tables
FACTURE et LIGNE_FACT.
- Créer la table de journalisation.
- Modifiez votre déclencheur de telle façon qu'après la mise à jour, il teste si le stock est inférieur
à une valeur seuil de 5. Si le stock est inférieur à ce seuil, alors il devra insérer les informations
adéquates dans la table de journalisation (traitement du point 2).
- Testez à nouveau votre trigger jusqu'à obtenir au moins un message.

Vous aimerez peut-être aussi