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:d4-a07-exercice_applicatif_sur_les_declencheurs [2024/11/28 14:12] – [A vous de jouer !] dthevenot | sio2:d4-a07-exercice_applicatif_sur_les_declencheurs [2025/03/18 08:29] (Version actuelle) – [D4-A07 : Exercice applicatif sur les déclencheurs : (2) Gestion automatisée des données d'un parc immobilier] dthevenot | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== D4-A07 : Exercice applicatif sur les déclencheurs : Gestion automatisée des données d'un parc immobilier ====== | + | ====== D4-A07 : Exercice applicatif sur les déclencheurs : (1) Gestion automatisée des données d'un parc immobilier ====== |
+ | < | ||
Soit le modèle relationnel des données suivant : | Soit le modèle relationnel des données suivant : | ||
Ligne 5: | Ligne 6: | ||
immeuble(id, | immeuble(id, | ||
Clef primaire : id (autoincrémenté) | Clef primaire : id (autoincrémenté) | ||
- | Remarque : tous les attributs sont non null, parkingPrivatif | + | Remarque : tous les attributs sont non null, fibreOptique et parkingPrivatif |
appartement(idImmeuble, | appartement(idImmeuble, | ||
Ligne 14: | Ligne 15: | ||
piece(idImmeuble, | piece(idImmeuble, | ||
Clef primaire : idImmeuble, idAppartement, | Clef primaire : idImmeuble, idAppartement, | ||
- | Clefs étrangères | + | Clef étrangère |
Remarque : attributs NULL par défaut | Remarque : attributs NULL par défaut | ||
</ | </ | ||
Ligne 20: | Ligne 21: | ||
- créer le script de la base de données nommé votreNomBDParcImmo.sql | - créer le script de la base de données nommé votreNomBDParcImmo.sql | ||
- implanter ce script dans votre SGBD | - implanter ce script dans votre SGBD | ||
- | - vous avez ci-dessous le code d'un déclencheur | + | - vous avez ci-dessous le code d'un déclencheur |
+ | - programmer | ||
- < | - < | ||
DROP TRIGGER IF EXISTS prixAppartBeforeInsert; | DROP TRIGGER IF EXISTS prixAppartBeforeInsert; | ||
Ligne 32: | Ligne 34: | ||
DELIMITER ; | DELIMITER ; | ||
</ | </ | ||
- | | + | - Alternative empêchant l’insertion (aucune action, transaction interrompue) si il y a un prix et pas de place de parking, |
- | | + | |
- < | - < | ||
IF NEW.placeParking = 0 AND NEW.prixParking IS NOT NULL THEN | IF NEW.placeParking = 0 AND NEW.prixParking IS NOT NULL THEN | ||
Ligne 46: | Ligne 47: | ||
- Modifier l' | - Modifier l' | ||
< | < | ||
- | -- Insertion d'un immeuble | + | -- Insertion d'un immeuble |
INSERT INTO immeuble | INSERT INTO immeuble | ||
(Id, adrNum, adrVoie, adrCodePostal, | (Id, adrNum, adrVoie, adrCodePostal, | ||
Ligne 53: | Ligne 54: | ||
</ | </ | ||
< | < | ||
- | -- Insertion de deux appartements, | + | -- Insertion de deux appartements, |
-- les deux ayant un prix de place de parking | -- les deux ayant un prix de place de parking | ||
- | -- La première insertion doit échouer, la seconde réussir. | ||
INSERT INTO appartement | INSERT INTO appartement | ||
| | ||
Ligne 65: | Ligne 65: | ||
===== A vous de jouer ! ===== | ===== A vous de jouer ! ===== | ||
- | - Adapter les triggers précédents afin de vérifier la contrainte suivante : un appartement ne peut avoir de place de parking si l’immeuble n’a pas de parking privatif ; | + | - Adapter les triggers précédents afin de vérifier la contrainte suivante : un appartement ne peut pas avoir de place de parking si l’immeuble n’a pas de parking privatif ; |
- | - On souhaite que la contrainte suivante soit vérifiée | + | - On souhaite que la contrainte suivante soit appliquée: la superficie totale d’un appartement doit être égale à la somme de la superficie de chacune de ses pièces. Pour ce faire, créer les triggers nécessaires. |
- Combien en créez-vous ? sur quels événements ? sur quelle(s) tables() ? | - Combien en créez-vous ? sur quels événements ? sur quelle(s) tables() ? | ||
- Comment les appelez-vous ? | - Comment les appelez-vous ? | ||
Ligne 73: | Ligne 73: | ||
===== Tests unitaires ===== | ===== Tests unitaires ===== | ||
- | * Insérer une pièce de superficie X et constater que la superficie de l’appartement à augmenter de X. | + | * définissez les tests unitaires à réaliser |
- | * Supprimer une pièce, constater la mise à jour de la superficie. | + | |
- | * Modifier la superficie d’une pièce, constater la mise à jour de la superficie. | + | |
- | * ... | + | |
- | + | ||
+ | ====== D4-A07 : Exercice applicatif sur les déclencheurs : (2) Gestion de commandes de formations ou de livres ====== | ||
+ | - {{ : | ||
+ | - [[https:// | ||