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 :
WebCash S.A.R.L
24, Avenue des Rêves roses
75008 PARIS |
FACTURE
N° 12345 |
Paris, le 15/10/2000 |
Nom :
|
BIDOCH |
Prénom : |
Robert |
Adresse :
|
12, rue du centre
|
Code Postal :
|
70000 |
Ville : |
Gray |
|
N° Article
|
Libellé |
Prix Unitaire
|
Quantité |
Prix |
234 |
Stylo Plume |
12.5 F |
1 |
12.50 F |
568 |
Couteau Suisse |
75.00 F |
2 |
150 F |
132 |
Serviette |
30.00 F |
1 |
30.00 F |
TOTAL TTC :
|
192.50 F |
Dont TVA 19.6% :
|
37.73 F
|
A PAYER :
|
192.50
F |
|
Avec nos plus cordiaux remerciements
|
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...
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
|