Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Consolidation de données avec MySQL

Par Kevin MARTINEL Publié le 06/09/2015 à 21:37:45 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Dans cet article nous allons voir comment consolider une base de données. Pour qu’une consolidation soit possible il faut au moins une relation entre deux tables. En cas de suppression d’un enregistrement dans la table mère, l’enregistrement de la table fille n’a plus de référence à la table mère. L’information est donc perdue. Une consolidation peut résoudre ce problème.

Connaissances requise

Merise, MySQL, PL/SQL.

Cas pratique

Prenons l’exemple d’un système de facturation dans une société tierce. Ci-dessous un extrait du MPD (Modèle Physique de Données).

Figure 1. MPD avant consolidation

MPD avant consolidation

Figure 2. Code de création: client

Code de création: client

Figure 3. Code de création: vendeur

Code de création: vendeur

Figure 4. Code de création: facture (champs consolidés)

Code de création: facture (champs consolidés)

Figure 5. Données client

Données client

Figure 6. Données vendeur

Données vendeur

Figure 7. Données facture

Données facture

La table 'facture' est en relation avec les tables 'vendeur' et 'client'. Elle contient donc deux clés étrangères.

Un vendeur a quitté la société depuis plusieurs années et l’administrateur souhaite le supprimer de la base de données.

Supposons qu’en cas de suppression d’un vendeur la valeur de la clé #vendeur_id est modifiée à NULL dans la table 'facture' (ON DELETE SET NULL). Il nous est donc impossible de savoir qui a édité les factures associées à ce vendeur.

Comment faire pour conserver les informations de ce vendeur ?

Pour répondre à cette problématique nous allons migrer certaines colonnes de la table Vendeur vers la table 'facture'.

Figure 8. MPD après consolidation

MPD après consolidation

Les champs ‘nom’, 'prenom' et 'matricule' ont été ajoutés à la table 'facture'. Ces colonnes ne seront pas mises à jour systématiquement mais seulement lors de la suppression du vendeur associé. Ainsi les traitements seront moins lourds.

Comment automatiser la mise à jour des champs consolidés ?

Nous allons utiliser une procédure stockée (stored procedure) de type déclencheur (trigger). Lors de la suppression d’un vendeur elle sera exécutée automatiquement. Le déclencheur est le suivant :

Figure 9. Déclencheur

Déclencheur

Ce déclencheur va écouter les évènements de suppression sur la table 'vendeur'. Avant chaque suppression d'un vendeur, il va vérifier si celui-ci est lié à une ou plusieurs factures, mettre à jour les champs consolidés de toutes les factures en relations puis supprimer le vendeur. Remarque : ‘OLD’ correspond à la valeur de l’enregistrement avant sa suppression. Le résultat de ce déclencheur est le suivant :

Figure 10. Résultat de la consolidation

Résultat de la consolidation

Le vendeur 'Jean Dupond' a été supprimé et le déclencheur a réagi. La clé étrangère ‘vendeur_id’ est modifiée à NULL par le ‘ON DELETE SET NULL’ et les champs consolidés ont été mis à jour.

Conclusion

La consolidation est un moyen efficace de conserver les données d’une table en cas de suppression ou de modification. Les triggers permettent d’exécuter des programmes SQL de manière automatique. L’utilisation d’un trigger est plus avantageuse par rapport à une solution logicielle de couche supérieure (programme C, Java, .etc.) qui alourdirait l’opération.

Merci de votre lecture !

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels