
Dossier "SAM l'Informaticien" du 22/01 au 04/02 2001 par Stéphane Lambert
 odéliser, c'est 
                  comprendre. Pour développer le logiciel dont les utilisateurs 
                  ont besoin, l'informaticien ne doit pas correspondre aux 
                  stéréotypes de notre imaginaire collectif. Au contraire, il 
                  lui appartient de s'ouvrir, d'aller vers les utilisateurs de 
                  son travail, de cerner quels sont leurs besoins, de discuter 
                  avec eux et de les regarder travailler. C'est ainsi qu'il 
                  cernera au mieux leurs attentes et qu'il apprendra à  se mettre 
                  à  la portée des utilisateurs de son travail : rien de tel 
                  qu'observer un journaliste rà¢lant devant son interface "qui 
                  veux pas faire ce que je lui dis, euh !!!" pour se rendre 
                  compte qu'il vaut mieux se mettre à  la place de l'utilisateur 
                  final afin qu'il soit satisfait de son programme. Car c'est de 
                  cette manière que l'on obtient la récompense suprême : voir un 
                  client heureux d'utiliser son nouveau logiciel, et surtout le 
                  voir travailler avec durant longtemps. Attachons-nous à  ce 
                  noble objectif : après avoir commenté le MPD ou Schéma de Base 
                  de la Newsletter vue précédemment et avoir regardé ce qu'il 
                  représente véritablement, je vous proposerais un autre exemple 
                  significatif.
 odéliser, c'est 
                  comprendre. Pour développer le logiciel dont les utilisateurs 
                  ont besoin, l'informaticien ne doit pas correspondre aux 
                  stéréotypes de notre imaginaire collectif. Au contraire, il 
                  lui appartient de s'ouvrir, d'aller vers les utilisateurs de 
                  son travail, de cerner quels sont leurs besoins, de discuter 
                  avec eux et de les regarder travailler. C'est ainsi qu'il 
                  cernera au mieux leurs attentes et qu'il apprendra à  se mettre 
                  à  la portée des utilisateurs de son travail : rien de tel 
                  qu'observer un journaliste rà¢lant devant son interface "qui 
                  veux pas faire ce que je lui dis, euh !!!" pour se rendre 
                  compte qu'il vaut mieux se mettre à  la place de l'utilisateur 
                  final afin qu'il soit satisfait de son programme. Car c'est de 
                  cette manière que l'on obtient la récompense suprême : voir un 
                  client heureux d'utiliser son nouveau logiciel, et surtout le 
                  voir travailler avec durant longtemps. Attachons-nous à  ce 
                  noble objectif : après avoir commenté le MPD ou Schéma de Base 
                  de la Newsletter vue précédemment et avoir regardé ce qu'il 
                  représente véritablement, je vous proposerais un autre exemple 
                  significatif. 
Utiliser le Modèle 
                  Physique de Donnée : 
Une fois le 
                  système d'information analysé et modélisé en Modèle Conceptuel 
                  de Donnée (MCD), et après être passé par le Modèle Logique de 
                  Donnée Relationnel (MLDR), nous arrivons au Modèle Physique de 
                  Donnée (MPD). Il s'agit maintenant de créer la base 
                  correspondante à  l'étude entamée. C'est à  ce stade seulement 
                  que la base de donnée choisie intervient. 
Le SQL 
                  (Structured Query Language), ou Langage d'Interrogation 
                  Structuré, a été reconnu en tant que norme officielle de 
                  langage de requête relationnelle par l'institut ANSI (American 
                  National Standards Institute) et par l'organisme ISO 
                  (International Standards Organization). Malgré cela, les 
                  syntaxes d'extractions des données et de créations des tables 
                  varient quelques peux d'une base à  l'autre. En particulier, si 
                  la base de donnée utilisée pour le développement n'est pas 
                  véritablement relationnelle (cas de MySql dans sa version 
                  actuelle), il appartiendra au développeur de prendre lui-même 
                  en charge les limitations rencontrées, afin de s'assurer que 
                  sa base ne puisse JAMAIS être corrompue, c'est à  dire contenir 
                  des données aberrantes. 
                  
APPLICATION SUR UN MODELE PHYSIQUE CONCRET : 
                  
Prenons l'exemple du schéma de base (MPD) suivant 
                  : 
                  
 
 
                  
                  
- La table 
                    MOTIVATIONS est très 
                    simple à  créer : elle comporte deux champs, ID_MOTIVATIONS et INTITULE. ID_MOTIVATIONS est la Clé Primaire. 
                    
 
- ABONNES comporte les 12 champs du 
                    schéma. ID_ABONNES est la 
                    clé primaire. ID_MOTIVATIONS est une clé 
                    étrang7re provenant de MOTIVATIONS, c'est à  dire que sa 
                    valeur doit être toujours égale à  une valeur de ID_MOTIVATIONS de MOTIVATIONS. L'intérêt majeur des 
                    clés étrangères est surtout d'éviter les redondances, 
                    sources d'erreurs. 
 - Pour les bases non totalement relationnelles : Il appartiendra au développeur de vérifier lors de chaque insertion dans ABONNES que l'ID_MOTIVATIONS fournis fais partie des valeurs existantes de ID_MOTIVATIONS de MOTIVATIONS. De même, lors de chaque suppression d'un enregistrement de MOTIVATIONS, il faudra vérifier qu'aucun enregistrement d'ABONNES n'utilise la valeur d'ID_MOTIVATION correspondante.
 
 
- S_INSCRIT comporte deux champs, 
                    ID_ABONNES et ID_RUBRIQUE. ID_ABONNES et ID_RUBRIQUE sont clé primaire de 
                    S_INSCRIT : S_INSCRIT a comme clé primaire la 
                    concaténation de ces deux champs. C'est à  dire que tout 
                    couple (ID_ABONNES,ID_RUBRIQUE) de S_INSCRIT est unique. ID_ABONNES est aussi clé étrangère 
                    de ABONNES dans S_INSCRIT, et ID_RUBRIQUE est clé étrangère de 
                    RUBRIQUE dans S_INSCRIT. 
 Une telle table est communément appelée "Table de Lien". L'intérêt d'une telle table est que pour chaque ID_ABONNES donné, il est aisé de retrouver tous les ID_RUBRIQUE associés, et vice et versa.
 - Pour les bases non totalement relationnelles : Il faudra vérifier lors de chaque insertion dans S_INSCRIT que le couple (ID_ABONNES,ID_RUBRIQUE) n'existe pas déjà dans la table S_INSCRIT, que ID_ABONNES existe dans ABONNES et que ID_RUBRIQUE existe dans RUBRIQUE. De même, pour chaque suppression d'un abonné, il faudra supprimer tous les couples (ID_ABONNES,ID_RUBRIQUE) ayant l'ID_ABONNE correspondant. Pareil pour toute suppression de RUBRIQUE.
 
 
- RUBRIQUE est elle aussi très simple 
                    à  créer : elle comporte deux champs, ID_RUBRIQUE et NOM_RUBRIQUE. ID_RUBRIQUE est la Clé Primaire. 
                    
 
- NEWSLETTERS comprend les 5 champs 
                    du schéma. ID_NEWSLETTER 
                    est la clé primaire. ID_RUBRIQUE est une clé étrangère 
                    provenant de RUBRIQUE. 
                    
 - Pour les bases non totalement relationnelles : Il faudra vérifier lors de chaque insertion dans NEWSLETTER que ID_RUBRIQUE existe dans RUBRIQUE. De plus, pour chaque suppression d'une rubrique, il faudra s'interroger sur le sort réservé à chaque newsletter de cette rubrique : les détruire ou les archiver.
 
APPLICATIONS AUX BASES RELATIONNELLES : 
                  
Les vérifications détaillées précédemment n'ont 
                  lieu que pour assurer la cohérence de la base. Il est donc 
                  logique, si celle ci le permet, de déléguer et d'automatiser 
                  ces taches au niveau ce celle-ci. Généralement, les 
                  vérifications afférentes à  une clé étrangère sont confiées à  
                  un Trigger (un Trigger est un ensemble d'instruction SQL 
                  s'effectuant avant ou après un événement donné, par exemple 
                  une insertion ou une suppression). Ainsi, lors de chaque 
                  commande d'insertion sur la table désignée au Trigger 
                  préalablement correctement programmé, celui ci va vérifier 
                  AVANT l'insertion que la clé étrangère est valable. Dans le 
                  cas ou elle ne le serait pas, le Trigger renvoie un message 
                  d'erreur et l'insertion ne s'effectue pas, évitant ainsi de 
                  corrompre la base. De même, certains traitements automatisés 
                  pourront être réalisés directement à  l'aide de procédures 
                  stockées. Exemple : un devis validé qui entraîne la création 
                  de la facture correspondante. Et surtout, les Trigger et 
                  Procédures Stockées étant compilées directement par la Base de 
                  Donnée, leur exécution est beaucoup plus rapide qu'une série 
                  d'instruction SQL envoyées par le programme attaquant la base. 
                  
Une base de donnée correctement pensée est à  envisager 
                  comme un contenant d'information "vivant", forcement cohérent, 
                  aux réactions automatisées. Une telle base se suffirait 
                  presque à  elle-même pour gérer un Système d'Information. Le 
                  développement ne consisterait alors plus qu'à  afficher son 
                  contenu en temps réel, et à  fournir les outils d'insertion 
                  appropriés. Le rêve... 
SECOND EXEMPLE : MODELISER UN DOCUMENT 
                  
Il est courant, lors du développement d'un site Web ou 
                  de l'informatisation d'un système d'information, de démarrer 
                  son analyse par un document. Captures d'écrans, photocopies, 
                  sont parfois les principales pièces jointes à  la demande de 
                  devis, accompagnés du commentaire suivant : 
"Je veux 
                  faire ça !!!". Bien. Alors, faisons ça... 
                  
Système d'Information : 
L'entreprise 
                  "WebCash" de vente par correspondance désire ajouter à  son 
                  site un système de consultation de factures visible en ligne 
                  pour ses clients. Chaque client, après authentification, 
                  pourra accéder à  toutes les factures le concernant, qu'elles 
                  soient anciennes ou en cours de traitement indifféremment. 
                  Pour être sur de bien se faire comprendre, "WebCash" fournis 
                  une copie d'une facture type en disant : 
"C'est ça qu'on 
                  veut sur l'écran !" 
Voici une copie de cette 
                  facture : 
                   
                  
Voilà , tous 
                  les éléments sont réunis. Il ne reste plus qu'à  concevoir la 
                  Base de Donnée se cachant derrière cette innocente petite 
                  facture. Cet exemple est très conforme à  la réalité. Il sera 
                  très intéressant à  étudier, car il permettra d'expliquer un 
                  certain nombre de points, et de mettre en évidence certaines 
                  erreurs à  ne pas commettre. N'hésitez pas à  prendre le stylo 
                  et à  vous entraîner, je vous fournirais une solution commentée 
                  la prochaine fois. 
A 
                  bientôt... 
| << Lire la 2ème partie | 
Stéphane Lambert 
                  
http://www.vediovis.fr/ 
Spécialisé dans le 
                  développement Web, Stéphane LAMBERT
a fondé VEDIOVIS 
                  PRODUCTIONS en Mai 2000. 
Son expérience couvre 
                  essentiellement les sites à  fortes audiences, 
                  
institutionnels ou audiovisuels.
Tous droits réservés - Reproduction même partielle interdite sans autorisation préalable






 
    


 vediovis.fr
vediovis.fr