Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sio2:exercices_d_applications [2025/03/14 10:22] – dthevenot | sio2:exercices_d_applications [2025/03/17 19:09] (Version actuelle) – [Quelle solution possible ?] dthevenot | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
~~SLIDESHOW~~ | ~~SLIDESHOW~~ | ||
+ | ====== Exemples de cas d' | ||
====== 1) Utiliser des champs calculés ====== | ====== 1) Utiliser des champs calculés ====== | ||
Ligne 7: | Ligne 8: | ||
On imagine une base de données de gestion de commandes, afin de faciliter les calculs concernant les ventes réalisées, | On imagine une base de données de gestion de commandes, afin de faciliter les calculs concernant les ventes réalisées, | ||
- | - Ajouter | + | - Gérer automatiquement |
- | - Ajouter | + | - Gérer automatiquement |
**Quelle solution possible ?** | **Quelle solution possible ?** | ||
Ligne 51: | Ligne 52: | ||
< | < | ||
- | -- Table des produits | ||
CREATE TABLE produit ( | CREATE TABLE produit ( | ||
idProduit INT AUTO_INCREMENT PRIMARY KEY, | idProduit INT AUTO_INCREMENT PRIMARY KEY, | ||
Ligne 57: | Ligne 57: | ||
prixHt DECIMAL(10, 2), -- Prix hors taxe | prixHt DECIMAL(10, 2), -- Prix hors taxe | ||
tauxTva DECIMAL(5, 2), -- Taux de TVA en pourcentage | tauxTva DECIMAL(5, 2), -- Taux de TVA en pourcentage | ||
- | typeProduit ENUM(' | + | typeProduit ENUM(' |
- | dateLimiteConsommation DATE, -- Date limite pour produits alimentaires | + | |
- | classeEnergetique VARCHAR(5), | + | |
- | | + | |
(typeProduit = ' | (typeProduit = ' | ||
(typeProduit = ' | (typeProduit = ' | ||
- | ) | + | ), |
- | );</ | + | dateLimiteConsommation DATE, -- Date limite |
+ | | ||
+ | | ||
+ | </ | ||
< | < | ||
- réimporter le script de création de la bd de gestion des commandes en changeant le nom de la base de données(gestionCommandeExo2) et changer la table produit pour la remplacer avec celle ci-dessus | - réimporter le script de création de la bd de gestion des commandes en changeant le nom de la base de données(gestionCommandeExo2) et changer la table produit pour la remplacer avec celle ci-dessus | ||
Ligne 81: | Ligne 81: | ||
**Explication des contraintes d' | **Explication des contraintes d' | ||
* __Intégrité référentielle__ : Chaque produit alimentaire ou électroménager doit avoir une entrée correspondante dans la table produit. Cette intégrité est garantie par les clés étrangères (idProduit) dans les tables alimentaire et electromenager, | * __Intégrité référentielle__ : Chaque produit alimentaire ou électroménager doit avoir une entrée correspondante dans la table produit. Cette intégrité est garantie par les clés étrangères (idProduit) dans les tables alimentaire et electromenager, | ||
- | * __Clé primaire partagée__ : Les tables spécialisées alimentaire et electromenager | + | * __Clé primaire partagée__ : Les tables spécialisées alimentaire et électromenager |
- | * __Suppression en cascade__ : Lorsqu' | + | * __Suppression en cascade__ : Lorsqu' |
- | <alert type="success">Conclusion : ici besoin de déclencheur ! </ | + | <alert type="warning">Toutes les contraintes sont elles vérifiées ?</ |
< | < | ||
- | <alert type="warning"> | + | <alert type="success"> |
====== 3) Vérifier une contrainte d’associations | ====== 3) Vérifier une contrainte d’associations | ||
===== Trigger pour vérifier une contrainte d' | ===== Trigger pour vérifier une contrainte d' | ||
- | On ajoute à notre gestion commerciale la gestion des livraisons des commandes : un produit ne doit pouvoir être livré que si il a été commandé et sa quantité livrée ne doit pas dépasser la quantité commandée bien sûr. On simplifie le cas en autorisant les livraisons des produits | + | On ajoute à notre gestion commerciale la gestion des livraisons des commandes : un produit ne doit pouvoir être livré que si il a été commandé et sa quantité livrée ne doit pas dépasser la quantité commandée bien sûr. On simplifie le cas en définissant qu'une livraison ne concerne qu'une seule commande à la fois et un produit est livré |
===== Quels problèmes ? ===== | ===== Quels problèmes ? ===== | ||
- | * Rien ne nous assure que les livraisons portent sur des produits commandés ; | + | * Rien ne nous assure que les livraisons portent sur les produits commandés |
- | * Rien ne nous assure que les quantités livrées ne soient pas supérieures à celles commandées. | + | * Rien ne nous assure que les quantités livrées ne soient pas supérieures à celles commandées(si la quantité est inférieure il y aura un avoir non géré ici donc la quantité livrée inférieure ne pose pas de problème ici). |
===== Quelle solution possible ? ===== | ===== Quelle solution possible ? ===== | ||
- A l’insertion comme à la modification d’une livraison, on vérifie à la livraison que le produit livré figure bien dans la commande qui concerne la livraison; | - A l’insertion comme à la modification d’une livraison, on vérifie à la livraison que le produit livré figure bien dans la commande qui concerne la livraison; | ||
- | - Toujours à l’insertion et à la modification d’une livraison, on vérifie que la quantité | + | - Toujours à l’insertion et à la modification d’une livraison, on vérifie que la quantité livrée du produit soit au plus égale |
Le 1er cas est réalisable avec des contraintes d' | Le 1er cas est réalisable avec des contraintes d' |