Vous êtes sur la page 1sur 2

Année : 2020 - 2021

Professeur : M. N’SOUGAN
Filière : LICENCE 3
Option : GL

Travaux Pratiques de Bases de données


Mise en œuvre des contraintes d’intégrité et procédures stockées
Soit le schéma relationnel suivant :
- Clients (Num_Cli, Nom_Cli, Adresse_Cli, Telephone_cli, Region_CLi)
- Produits (Num_Pro, Lib_Pro, Prix_U, Qtestock, Seuil_Reapro)
- Commandes (Num_Com, Date_Com, Nbre_lc, Mtot_Com, Num_Cli=>Clients)
- Ligne_Coms (Num_Com=>Commandes, Num_Pro=>Produits, Qté_Com)
Où :
- Nbre_lc est le nombre de lignes de produits commandés dans une commande dans ligne_coms ;
- Mtot_Com est le montant total d’une commande à partir des produits commandés dans
ligne_coms ;

Travail à faire
1- Apres avoir créer une base de données nommée ges_com_bd sous PostgreSQL, créer les tables
correspondant au schéma relationnel en définissant toutes les contraintes de clé primaires et
étrangères possibles sur ces tables. En plus de ces contraintes, vous ajouterez les contraintes :
 De vérifications : le nombre de lignes de produits commandés, le montant total d’une
commande, le prix unitaire d’un produit, la quantité en stock, la quantité commandée et le
seuil de réapprovisionnement doivent être des nombres positifs non nuls ;
 De domaine : les régions possibles pour l’enregistrement d’un client sont les régions du
Togo ;
2- Ecrire une fonction <verifier_seuil> qui renvoie, après une inspection de la table produits, le
message ‘ Seuil atteint ou dépassé’, lorsque la quantité en stock a atteint ou est en dessous du seuil
de réapprovisionnement, pour chaque produit concerné.
3- Créer un trigger <ajout_commande> sur la table ligne_com qui, à l’ajout d’une nouvelle ligne,
incrémente de 1 l’attribut Nbre_lc dans la table commande.
4- Créer un trigger <verifier_qtecom> sur la table ligne_com qui, à l’ajout d’une nouvelle ligne,
vérifie que la quantité commandée n’est pas supérieure à la quantité en stock du produit commandé,
sinon mettre à jour l’attribut Qtestock déduite de la quantité commandée.
5- Créer un trigger <suppress_commande> sur la table ligne_com qui, à la suppression d’une ligne
commande, décrémente de 1 l’attribut Nbre_lc, recalcule le montant Mtot_com dans la table
commande puis met à jour la table produit en revalorisant l’attribut Qtestock.

Nul n’a le monopole de la connaissance et du savoir. 1


6- Insérer les données dans les différentes tables.
7- Traiter les requêtes suivantes en SQL :
a- Lister les clients qui ont adressé le plus de commandes (Num_cli,Nom_cli, Nbre de commandes
adressées).
b- Lister les commandes dont le montant Mtot_com est le plus élevé (Num_com, Mtot_com).
c- Lister les produits qui ont atteint ou qui sont en dessous du seuil de réapprovisionnement
(Num_pro, Qtéstock, seuil_réapro).
d-Donner dans chaque commande quelle est la ligne-commandée qui contient la plus grande
quantité de produit commandé.
e- Lister les produits qui n’ont pas été commandés (Num_pro, Lib_pro).
f- Ecrire la commande qui permet d’augmenter de 5% le prix de tous les produits.
g- Ecrire l’instruction qui supprime les produits qui n’ont fait l’objet d’aucune commande.

Nul n’a le monopole de la connaissance et du savoir. 2

Vous aimerez peut-être aussi