Beruflich Dokumente
Kultur Dokumente
A Serie2
L’état de la commande prend en premier lieu une valeur par défaut ‘CE‘.
Si toutes les quantités des produits figurants dans la commande peuvent être livrées
pour la commande (QTESTK > QTE SEUIL après décrémentation)
alors l’état de la commande = ’C LI ’
sinon : dans le cas où la quantité en stock d’un produit devient <= QTE SEUIL,
les MAJ de cette commande sont annulés et l’état de la commande = ‘CNLI’.
Questions
Partie A)
1) Tracer le diagramme E/R correspondant au Modèle conceptuel de Données (MCD).
2) Donner le Schéma de cette base de données en modèle relationnel (les relations doivent
être en 3ème Forme Normale).
1
Mme Grissa.A Serie2
Partie B)
1) Ecrire une procédure PL/SQL qui permet d’afficher les informations d’un produits donné
(code_p, libellé, qte_stk, qte_seuil, nom_fournisseur).
2) Ecrire une fonction PL/SQL qui vérifie si la quantité dans le stock d’un produit donné est
supérieure à sa quantité seuil.
3) Ecrire une fonction PL/SQL Calcul_mnt_cmde qui retourne le montant total d’une commande
donnée. (Num_cmde est un paramètre en entrée).
5) Ecrire une procédure PL/SQL Affi_Prod qui affiche la liste de tous les produits (code, libellé,
prix, qtestk), triés par ordre croissant du code du produit.
6) Ecrire une procédure PL/SQL qui permet de compter le nombre de produits où la quantité
dans le stock est supérieur à 30.
7) Ecrire une procédure PL/SQL qui permet d’afficher la liste des produits ayant une quantité dans
le stock inférieure ou égale à la quantité seuil (code du produit, nom du produit, numéro du
fournisseur, nom du fournisseur).
10) Ecrire une procédure stockée qui permet d’afficher pour un produit donné les attributs:
code_p, libellé, prix, qte_stk et une mention sur la demande de ce produit (forte, moyenne, faible).
Une mention sur la demande est « forte » si la quantité du produits vendus dépasse 1000, elle est
« moyenne » si la quantité du produits vendus est compris entre 500 et 1000 et demande « faible »
sinon).
11) Ecrire un programme PL/SQL qui insert, pour chaque produit, les informations demandées par
le fournisseur (code_prd, libellé, prix, qte_stck) dans une autre table (préalablement créée dans le
programme).
12) Afin de raffiner l’analyse du profil de chaque client, le service marketing établit l’état suivant
pour ses clients : calculer pour chaque client le montant minimum, maximum et moyen de ses
commandes ainsi que le nombre total de commandes qui lui sont établies.
a) Ecrire les fonctions stockées qui retournent : le nombre de commandes, le montant moyen des
commandes, le montant maximum des commandes et le montant minimum des commandes
d’un client donné.
b) Ecrire un programme PL/SQL qui établit l’état décrit ci-dessus pour tous les clients.
Pour chaque client, on précise son numéro de carte d’identité, son nom, son prénom, son
nombre total de commandes, le montant minimum, le montant maximum et le montant
moyen de ses commandes.
13) Ecrire un programme PL/SQL qui génère une exception si la quantité stockée d’un produit est
inférieure ou égale à la quantité seuil.
2
Mme Grissa.A Serie2
Nci-cl Num-tel
el
Client (1, 1)
(0, N) Lance Commande
(1, N)
(1,
N)
Libelle Prix Qte-seuil Qtestk
LigneC
mde
Qte-cmd (1, 1)
Code-prd
(1, 1)
Num-lg-cmd
fournit
(1, N)
Fournisseur
Code-f Nom
Num-tel
Adresse
3
Mme Grissa.A Serie2
Modèle Relationnel
Client
Nci_cl Nom Prénom Adresse Num_tel
Commande
Num_cmd Date_cmd Etat Nci_cl
Fournisseur
Code_f Nom Adresse Num_tel
Produit
Code_prd Libelle Prix Qte_Seuil QteStk Code_f
Ligne_Cmde
Num_Lg-cmd Num_cmd Code_prd Qte_cmd
4
Mme Grissa.A Serie2
5
Mme Grissa.A Serie2
6
Mme Grissa.A Serie2
SQL> select * from client;
6 ligne(s) sélectionnée(s).