Maitriser les requêtes 05

LES REQUETES DE MAINTENANCE

1 - Introduction    

Une base de données évolue sans arrêt : de nouveaux enregistrements sont introduits, d'autres sont archivés, d'autres sont modifiés, d'autres enfin sont supprimés. Des contrôles, suivis éventuellement de corrections, sont effectués.            
Deux types de requête sont particulièrement utilisés pour ces opérations de maintenance :    

  • la suppression, qui permet de faire disparaître des enregistrements jugés obsolètes, erronés ou inutiles ;
  • la mise à jour, qui permet de modifier le contenu de certains enregistrements.
  
Sont supprimés ou modifiés les enregistrements qui répondent à certains critères. 

Ces opérations sont généralement effectuées sur une seule table à la fois. Cependant, par le jeu des relations, suppressions et modifications peuvent se répercuter en cascade dans d'autres tables, si l'option correspondante a été choisie lors de la création de la relation, après que l'intégrité référentielle eût été requise.   
  • La suppression est une opération qui s'effectue au niveau de l'enregistrement
  • La mise à jour intervient souvent à un niveau plus fin : seuls certains champs, dans certains enregistrements, sont concernés.    
Attention ! Une fois effectuées, suppressions et mises à jour sont irréversibles. Avant d'effectuer une requête de ce type, il est indispensable d'effectuer une copie des tables concernées, voire de la BDD toute entière.   
 

Bien entendu, une opération de modification ou de suppression concernant un tout petit nombre d'enregistrements ne justifie pas la création d'une requête ; il suffit d'intervenir ponctuellement dans la table considérée. 
Par contre, si le nombre d'opérations à effectuer croit, la création d'une requête fait gagner du temps et diminuer le risque d'erreurs.   
   

2 - La suppression    

La requête de suppression opère sur une table. Elle supprime les enregistrements (ou lignes) répondant à un ou plusieurs critères. 
Dans la figure ci-dessous, les enregistrements répondant à ces critères sont colorés en rouge ; la requête les fait disparaitre irrémédiablement.


 
 A titre d'exemple, l'opération de suppression peut être utile dans les cas suivants :        
  • retirer de la BDD d'une entreprise toutes les données économiques relatives à un exercice clos ;
  • retirer de la table des prêts (d'une bibliothèque) toutes les opérations terminées (le livre emprunté a été rendu) ;
  • retirer du fichier journal d'un système informatique tous les enregistrements âgés de plus d'un mois ;
  • retirer de la liste des clients tous ceux qui n'ont rien commandé depuis deux ans ;
  • éliminer d'une table tous les enregistrements incomplets (un champ donné n'a pas été renseigné) ;
  • retirer de la table du stock tous les articles qui se sont mal vendus au cours des douze derniers mois ;
  • etc.
Supposons, à titre d'exemple, que nous voulions éliminer d'une table "Factures" toutes les factures soldées avant le 1er janvier de cette année (2002). 
Dans la fenêtre "Base de données" nous sélectionnons l'objet "Requêtes", puis nous double-cliquons sur "Créer une requête en mode Création". 
Dans la boite "Afficher la table", nous sélectionnons la table "Factures", nous l'ajoutons et nous fermons. Dans la fenêtre "Microsoft Access", nous cliquons sur l'icône de la barre d'outils et, dans la liste déroulante qui s'affiche, nous choisissons "Requête Suppression". 
Nous introduisons le champ "Date_de_réglement" dans la grille et, sur la ligne "Critères :", nous écrivons : <#01/01/2002#   
l'opérateur < signifiant "antérieur à", et les signes # rappelant que nous opérons sur une date.  
Attention ! Si nous basculons en mode feuille de données en cliquant sur l'icône 
, le logiciel affiche la liste des enregistrements qui seront supprimés, et non l'aspect de la table après suppression comme nous pourrions nous y attendre.   

 
Si nous exécutons la requête (icône ), tous les enregistrements antérieurs au 1er janvier 2002 sont éliminés. 

Si la table "Factures" est ouverte pendant la suppression, le mot "Supprimé" apparaît dans chaque champ de chaque enregistrement supprimé. 
Dès que l'on referme la table, les enregistrements supprimés disparaissent sans laisser de traces.  
L'écriture d'un critère de suppression doit tenir compte du type de données du champ auquel il s'applique. 

Nous associerons sous peu à ce chapitre des annexes détaillant les règles d'écriture des critères pour les différents cas.   

3 - La mise à jour     

Les informations contenues dans une BDD peuvent avoir besoin d'une mise à jour. Ainsi, un taux de TVA peut varier, de même que le prix de vente des produits et services de  l'entreprise, etc. 
Mais la mise à jour peut être soumise à un ou plusieurs critères, s'appliquant ou non au champ susceptible d'être modifié. 
Par exemple, une prime peut être versée à l'ancienneté, et donc dépendre de la date d'embauche du salarié (laquelle figure dans la table du personnel de l'entreprise). 
Par conséquent, la mise à jour s'applique à une table, et concerne soit une colonne complète, soit seulement certains enregistrements de la colonne (colorés en rose dans la figure ci-dessous).


 
L'actualité proche nous fournit un excellent exemple mise à jour simple : lors du passage à l'euro, tous les prix contenus dans les base de données durent être convertis de francs en euros à l'aide du fameux coefficient 6,55957. 
Pour traiter ce cas, créons une table "Produits" contenant trois champs : le code, le nom, et le prix unitaire HT de chaque produit. 
Les types de données correspondants sont : NuméroAuto, texte, et numérique (réel, deux décimales, pas de format particulier)
Saisissons quelques enregistrements, et créons une copie de la table ainsi remplie.

  1. Créons une requête en mode création. 
  2. Introduisons la table "Produits", cliquons sur l'icône , et sélectionnons "Requête Mise à jour" dans la liste déroulante. 
  3. Introduisons le champ "Prix_unitaire" dans la grille et, sur la ligne "Mise à jour :", saisissons l'expression représentée dans la figure ci-dessous. 
  4. Laissons la ligne "Critères :" vide, puisque le passage des francs aux euros concerne tous les enregistrements de la colonne sans exception.


Requête de mise à jour 

Attention ! si nous passons en mode feuille de données à l'aide de l'icône , nous constatons que l'opération de mise à jour n'est pas effectuée. Un bogue de plus à signaler à l'éditeur !

Si nous exécutons la requête, nous constatons que tous nos prix ont bien été convertis en euros. Mais prenons garde de ne pas exécuter la requête une deuxième fois !

Cet exemple de requête "mise à jour" est particulièrement simple, parce qu'il s'applique à tous les enregistrements sans distinction. 
On peut créer facilement un exemple avec critère, comme le montre la figure ci-dessous. 
La requête portera à 20,6 % le taux de TVA de 19,6 %, mais ne touchera pas aux autres taux.


Requête mise à jour avec critère 


4 - Conclusion

Les bases de données nécessitent des opérations de maintenance. 
Pour réaliser ces dernières, on utilise des requêtes, et plus particulièrement deux d'entre elles, la suppression et la mise à jour.           
Ces requêtes ne créent pas de table, elles modifient les tables existantes. 

Ces modifications étant irréversibles, il est indispensable d'effectuer des copies de sauvegarde avant d'exécuter les requêtes.  
Quelles que soient les précautions prises, il est parfois difficile d'éviter que des informations soient saisies deux fois. 

La recherche et l'élimination des doublons est donc également utilisée pour la maintenance des BDD.

Aucun commentaire:

Enregistrer un commentaire