Chapitre 1 : Introduction
1 - Préambule
Les activités humainesgénèrent des données. Il en a toujours été ainsi et, plus notre civilisation sedéveloppe, plus le volume de ces données croît. Aujourd'hui, les données sontde plus en plus souvent gérées par des moyens informatiques. Le mot"informatique" lui-même résulte de la contraction de"information" et "automatique". l'informatique est donc latechnique qui permet le traitement automatique de l'information.
Dans les entreprises, onmanipule souvent des données ayant la même structure. Prenons l'exemple de laliste des membres du personnel : pour chaque personne, on enregistre lenom, le prénom, le sexe, la date de naissance, l'adresse, la fonction dansl'entreprise, etc. Toutes ces données ont la même structure ; si ellessont gérées par des moyens informatiques, on dit qu'elles constituent une basede données. On utilise aussi le sigle BDD, et le terme anglais correspondantest Data Base.
Définition : une basede données est un ensemble structuré de données, géré à l'aide d'un ordinateur.
On rajoute parfois deuxconditions supplémentaires à la définition précédente :
· exhaustivité: la base contient toutes les informations requises pour le service que l'on enattend ;
· unicité: la même information n'est présente qu'une seule fois (pas de doublons).
Reprenons l'exemple de labase de données du personnel. Elle est utilisée pour la paye mensuelle, pourl'avancement, les mutations, les mises à la retraite, etc. L'exhaustivité estindispensable pour le personnel, car la personne qui est absente de la base...n'est pas payée. L'unicité est importante pour l'employeur, car la personne quiest enregistré deux fois... risque de toucher double paye ! Les bases dedonnées sont très utilisées dans les entreprises. Outre la liste des membres dupersonnel, on y trouve tout ce qui concerne :
- les fournisseurs
- les clients
- les prospects
- les contacts
- les commandes
- les factures
- les produits et services
- le stock
- le personnel
- les salaires et les charges correspondantes
- le commerce électronique, etc.
Bien entendu, les bases dedonnées existaient avant l'introduction de l'informatique au milieu duvingtième siècle, mais elles ne portaient pas encore ce nom. Pour stockerl'information, on utilisait des fiches, regroupées dans des boites appeléesfichiers. Initialement, les fiches étaient triées manuellement. Avecl'introduction des perforations, le tri devint mécanique, puisélectromécanique. Le développement des bases de données gérées par des moyensinformatiques a rendu obsolètes ces anciennes techniques.
2 - Le stockage desdonnées (les tables)
Des données ayant mêmestructure peuvent être rangées dans un même tableau. Dans le cas de la listedes membres du personnel, la première colonne contiendra les noms, la secondeles prénoms, la troisième le sexe, la quatrième la date de naissance, etc. Lacaractéristique d'un tel tableau est que toutes les données d'une même colonnesont du même type. Dans une base de données, un tel tableau s'appelle unetable. Ci-dessous se trouve un exemple simple de table :
| Nom | Prénom | Sexe | Adresse | Ville | Code postal |
| Durand | Pierre | M | 31 rue des champs | Uriage | 38410 |
| Chose | Stéphanie | F | 2 place Stanislas | Nancy | 54000 |
| Trombe | Jean | M | 18 cours de la libération | Grenoble | 38001 |
| etc. | | | | | |
Dans une table, les termesligne et enregistrement sont synonymes. Il en est de même pour les termescolonnes et champs. En anglais : row et column. La table d'une base de donnéesne doit pas être confondue avec la feuille de calcul d'un tableur. Cettedernière est également constituée d'un tableau, mais toutes les données d'unemême colonne ne sont pas forcément du même type. Dans le cas où elles le sont,la feuille de données peut facilement être transformée en table parimportation. Par contre, l'exportation d'une table de SGBD vers un tableur estthéoriquement toujours possible. En pratique il faut, dans les deux cas,disposer du filtre qui permet à l'un des logiciels de lire le format del'autre. A défaut, on peut exporter en mode texte (avec délimiteur) dans unlogiciel, puis réimporter dans l'autre.
3 - Le logiciel (SGBD)
Le logiciel qui gère une basede données s'appelle un système de gestion de base de données. On le désignegénéralement pas son sigle SGBD (DBMS en anglais, pour Data Base ManagementSystem). En fait, il devrait s'appeler "logiciel de gestion de base dedonnées" car, en informatique, le mot "système" désignegénéralement l'ensemble matériel + logiciel. Mais l'expression SGBD estconsacrée par l'usage, et nous n'avons pas d'autre choix que l'adopter.
Tous les SGBD présentent àpeu près les mêmes fonctionnalités. Ils se distinguent par leur coût, par levolume de données qu'ils sont capables de gérer, par le nombre d'utilisateursqui peuvent interroger la base simultanément, par la facilité avec laquelle ilss'interfacent avec les autres logiciels d'application utilisés parl'entreprise, etc.
Il existe des bases dedonnées de toutes tailles, depuis les plus modestes (une liste des numéros detéléphone utilisée par une seule personne), jusqu'aux plus grandes (la base desdonnées commerciales d'un magasin à succursales multiples, contenant destéraoctets de données ou plus, et utilisée par le service marketing).
Le nombre d'utilisateursutilisant une base de données est également extrêmement variable. Une BDD peutservir à une seule personne, laquelle l'utilise sur son poste de travail, ouêtre à la disposition de dizaines de milliers d'agents (comme dans les systèmesde réservation des billets d'avion par exemple).
Les éditeurs de SGBD separtagent un marché mondial enlente régression depuis deux ans : 8-9 milliards de dollars en 2000, 7-8milliards en 2001 et 6-7 milliards en 2002, les chiffres variant quelque peuselon les sources. Les principaux éditeurs (avec leurs parts de marché enl'an 2002, calculées sur le chiffre d'affaires) sont :
- IBM (36 %), éditeur des SGBD DB2 (développé en interne - mis sur le marché en 1984) et Informix (obtenu par rachat de l'entreprise correspondante en 2001 ; la société Informix avait été créée en 1981. Une version bridée de DB2 vient d'apparaître sur le marché, où elle concurrence SQL Server de Microsoft ;
- Oracle (34 %), éditeur du SGBD qui porte le même nom. Cette entreprise a été créée en 1977 ;
- Microsoft (18 %), éditeur de trois SGBD. SQL Server est destiné aux gros systèmes, Access est un produit de bureautique professionnelle, et Foxpro est destiné aux développeurs. L'arrivée de Microsoft sur le marché des SGBD date du début des années 90 ;
- Sybase (<3 %). Cette entreprise, qui a été créée en 1984, est aujourd'hui marginalisée.
Ces chiffres recouvrent desréalités contrastées, quand on les fractionne par plate-forme.Dans le monde Unix, Oracle est en tête avec 62 %, suivi d'IBM (Informix compris)avec 27 %, alors que Microsoft n'est pas présent sur ce marché. Dans lemonde Windows, Microsoft a pris la tête avec 45 %, suivi d'Oracle avec27 % et d'IBM avec 22 %.
Le classement par nombred'exemplaires (ou licences) vendus est très différent. Il met en avant les SGBDconçus pour gérer les bases de taille modeste ou modérée. Dans ce domainel'éditeur Microsoft, qui vend plusieurs millions d'exemplaires de son logicielAccess par mois, pulvérise tous les records. L'usage des SGBD se démocratise àtoute vitesse, bien qu'un SGBD soit plus difficile à maîtriser qu'un traitementde texte ou un tableur (pour ne citer que les logiciels les plus courants).L'image du SGBD servant uniquement les très grosses bases, propriété d'unegrande multinationale, fonctionnant sous Unix sur une machine monstrueuse, gérépar un administrateur dictatorial, et coûtant un prix fou -- a vécu. Bondébarras !
Les analystes pensent que lemarché des SGBD fonctionnant sous Windows rejoindra celui des SGBD fonctionnantsous Unix en 2003 (pour le nombre de logiciels vendus) et en 2005 (pour lechiffre d'affaires). De manière schématique, on peut dire qu'Oracle arrive entête pour la technicité, et Microsoft pour la convivialité et la facilitéd'emploi. A fonctionnalités comparables, Oracle a la réputation d'être deuxfois plus cher que ses principaux concurrents.
En une vingtaine d'années, lemarché des SGBD s'est fortement consolidé. Ainsi dBase, le SGBD le plus utilisédes années 80-90, n'a plus qu'une importance mineure. Paradox, qui eut sonheure de gloire, semble avoir totalement disparu, bien que son format soitencore utilisé.
Un SGBD est principalementconstitué d'un moteur et d'une interface graphique. Le moteur est le coeur dulogiciel, c'est à dire qu'il assure les fonctions essentielles : saisirles données, les stocker, les manipuler, etc. L'interface graphique permet àl'utilisateur de communiquer commodément avec le logiciel. Pour dialoguer avecles SGBD qui ne sont pas équipés d'une interface graphique, il faut utiliser lelangage SQL (Structured Query Language), et introduire les instructions àl'aide d'un éditeur de lignes.
Langage normalisé demanipulation des bases de données, SQL est utilisable avec pratiquement tousles SGBD du marché. Cependant, chaque éditeur ayant développé son propre"dialecte" -- comme c'est toujours le cas en informatique -- il fautpouvoir disposer d'un "dictionnaire" pour transporter une BDD d'unSGBD à l'autre. Ce "dictionnaire" a été développé par Microsoft sousle nom ODBC (Open Data Base Connectivity).
4 - Le matériel (serveurde BDD)
Le choix du matérielinformatique sur lequel on installe un SGBD est fonction, comme ce dernier, duvolume des données stockées dans la base et du nombre maximum d'utilisateurssimultanés.
Lorsque le nombred'enregistrements par table n'excède pas le million, et que le nombred'utilisateurs varie de une à quelques personnes, un micro-ordinateur actuel debonnes performances, un logiciel système pour poste de travail, et un SGBD"bureautique" suffisent. Exemple : le logiciel Access 2002de Microsoft, installé sur un PC récent, doté de 1 Go de mémoire vive etfonctionnant sous Windows XP.
Si ces chiffres sontdépassés, ou si le temps de traitement des données devient prohibitif, il fautviser plus haut. Le micro-ordinateur doit être remplacé par un serveur de BDD,dont les accès aux disques durs sont nettement plus rapides. Le logicielsystème client doit être remplacé par un logiciel système serveur (doncmulti-utilisateurs), et le SGBD bureautique par un SGBD prévu pour les grossesBDD multi-clients. Ceci dit, la structure d'une grosse base n'est pasdifférente de celle d'une petite, et il n'est pas nécessaire de disposer d'un"mainframe" (une grosse machine) gérant des milliers de milliards d'octetspour apprendre à se servir des BDD. Ce n'est pas parce qu'il gère un plus grandvolume de données qu'un SGBD possède plus de fonctionnalités.
Quelle que soit sa taille, lesystème constitué de la machine et du SGBD doit être correctement équilibré. Unserveur de BDD doit posséder à la fois les qualités de serveur de fichier (bonaccès aux disques) et celles d'un serveur d'applications (unité centrale biendimensionnée, mémoire vive suffisante). En observant un serveur de BDD en coursde fonctionnement, on peut observer les trois cas de déséquilibresuivants :
- la machine fait du "swapping", c'est à dire qu'elle passe son temps à promener des données entre la mémoire vive et la mémoire virtuelle (laquelle réside sur disque). Le remède consiste à augmenter la mémoire vive -- si la chose est matériellement possible ;
- si l'unité centrale est sous-occupée, alors que le disque dur ne cesse de tourner, la machine est sous-dimensionnée quant à sa mémoire de masse. Les remèdes : utiliser une interface disque plus performante (SCSI), un disque dur plus rapide, un système RAID 0. Ce cas est le plus fréquemment rencontré ;
- si l'unité centrale est utilisée à fond, alors que les disques durs sont peu sollicités, la machine est sous-motorisée. Les remèdes : utiliser une machine possédant des processeurs plus rapides, ou un plus grand nombre de processeurs.
Jusqu'à une date récente, lesconstructeurs de serveurs (et les éditeurs de SGBD) conseillaient à leursclients de consolider leurs données, en les rassemblant dans un nombre minimumde grosses BDD, installées sur un nombre minimum de serveurs surpuissants.Comme le coût des serveurs croît exponentiellement avec le nombre deprocesseurs, et que le coût des licences (des SGBD) est proportionnel au nombrede processeurs, constructeurs et éditeurs ont gagné de l'or pendant la dernièredécennie. Avec l'éclatement de la bulle Internet, les cordons de la bourse sesont resserrés, si bien que les services informatiques des entreprisescommencent à recourir - de gré ou de force - à des systèmes plus décentraliséset de taille plus raisonnable.
5 - L'administration de labase de données
L'ensemble "serveur deBDD + SGBD" constitue un système informatique dont l'importance ne cessede croître dans l'entreprise. La personne responsable de la maintenance et del'évolution de ce système s'appelle l'administrateur de la base de données. Dèsque l'entreprise atteint la taille d'une grosse PME, l'administration de la BDDpeut nécessiter la présence d'une personne à temps plein, voire plus.
Être administrateur de BDDrequiert des compétences particulières, très différentes de celles requisespour être administrateur de réseau ou de système informatique. Il en résulte ledéveloppement de deux pôles de compétences informatiques dans l'entreprise. On remarqueque, dans l'entreprise toujours, la spécialisation des informaticienss'accroît.
Pour être complet, il fautsignaler que le développement des sites web contribue à créer un troisième pôlede compétences dans l'entreprise. Le responsable correspondant est appeléwebmestre, et non "administrateur de site", parce que le posterequiert des compétences multidisciplinaires (et pas seulement informatiques).
6 - Les différents modèlesde bases de données
Les bases de données dumodèle "relationnel" sont les plus répandues (depuis le milieu desannées 80 environ), car elles conviennent bien à la majorité des besoinsdes entreprises. Nous verrons aux chapitres 5 et 6 en quoi ellesconsistent. Le SGBD qui gère une BDD relationnelle est appelé "SGBDrelationnel", ce qui est souvent abrégé en SGBDR.
D'autres modèles de bases dedonnées ont été proposés : hiérarchique, en réseau, orienté objet,relationnel objet. Aucun d'entre eux n'a pu détrôner le modèle relationnel, nise faire une place notable sur le marché (sauf le relationnel objet, prôné parOracle, qui connaît un certain développement). Malgré sa généralité, le modèlerelationnel ne convient pas à toutes les BDD rencontrées en pratique. Il existedonc des SGBD spécialisés. Les deux exemples les plus connus concernent lagestion des BDD bibliographiques (ou documentaires), et celle des BDDgéographiques gérées à l'aide d'un SIG (Système d'Information Géographique).
7 - Le support pratique ducours
Pour étudier lefonctionnement des bases de données, ce cours s'appuie sur le SGBD"Access", qui fait partie de la suite bureautique "Office"(version professionnelle) de l'éditeur Microsoft. Access est un SGBD de milieude gamme, commercialisé à un coût très abordable, et conçu pour être utilisableà la fois par le développeur professionnel et l'utilisateur courant demicro-ordinateur (d'où son abord convivial).
La version 1 d'Access a étélancée au COMDEX, à l'automne de 1992. La version 2 date de 1994. Les versionssuivantes portent le nom de l'année : 95, 97, 2000 (publiée en 1999) et2002 (publiée en 2001). La version 2002 possède les caractéristiquessuivantes :
- elle peut contenir 2 Go de données au maximum. Ce chiffre est quelque peu trompeur car, en cours d'exploitation, la taille de la base de données grossit : de nouvelles données sont générées, d'autres ne sont plus utilisées, etc. Le SGBD ne récupère la place perdue que si on lui en donne l'ordre (compactage). Or la limite de 2 Go concerne la taille de la BDD avant compactage. La limite pratique (la taille après compactage) peut donc être notablement inférieure à 2 Go ;
- elle peut servir 5 à 10 utilisateurs simultanément ;
- chaque table peut comporter 2 millions d'enregistrements au maximum.
Si on installe Access sur unserveur de fichiers d'entrée de gamme (qui ne coûte pas plus cher qu'un PCmusclé, mais dont les accès disques sont nettement plus rapides), on peutatteindre des volumes de données convenant à une petite PME. Au delà, il faututiliser un SGBD gérant de plus gros volumes de données, et l'installer sur unserveur plus puissant.
En fait, dans l'entreprise,c'est surtout la limitation à 5-10 utilisateurs qui restreint les usagesd'Access à des opérations de taille modestes. Mais cela ne veut pas dire qu'unlogiciel bureautique comme Access ne soit utile que dans les petites PME. Il asa place un peu partout, et c'est la raison pour laquelle il se répand aussivite :
- d'abord, toutes les données manipulées dans une entreprise ne vont pas s'entasser dans une BDD unique, et il y a place pour des SGBD de puissances diverses ;
- ensuite, lorsqu'on recherche de l'information dans une grande base, une première interrogation permet généralement d'isoler la petite fraction des données auxquelles on s'intéresse. Lorsque c'est possible, on a intérêt à transférer la suite des opérations dans un tableur comme Excel ou un SGBD comme Access, qui sont plus conviviaux et où il est plus facile de manipuler les données. Ce transfert n'est facilement praticable que si les deux conditions suivantes sont remplies : le "gros" SGBD fonctionne sous Windows, et il permet d'exporter les résultats d'une requête vers la suite Office ;
- enfin, même si l'on planifie la création d'une grosse BDD consultée par de nombreux utilisateurs, il peut être utile de créer d'abord une maquette dans Access où, grâce à l'interface graphique, les développements sont beaucoup plus rapides. Lorsque la maquette fonctionne correctement, on effectue une migration vers un SGBD plus puissant tel que SQL Server ou DB2. Les SGBD qui fonctionnent sous Unix, et/ou ceux qui ne connaissent que leur format propriétaire, n'offrent pas cette possibilité.
Chapitre 2 : Les tables
1 - Introduction
Nous avons vu au chapitreprécédent que, dans les BDD, les données sont stockées dans des tables. Nousaborderons donc l'étude des BDD par celle de la création et de la manipulationdes tables. Dans les bases de données, la table est le premier objet par ordred'importance décroissante. Pas de table, pas de données !
Pour étudier les tables, cecours utilise le SGBD Access comme support pratique.
2 - La création d'unetable
La première opérationconsiste à créer d'abord une base de données vide. Le logiciel réclame un nomde fichier et un seul, car toutes les informations relatives à la BDD serontstockées dans le même fichier. Ce dernier comporte l'extension".mdb", et sa taille initiale est voisine de 96-100 ko).
La fenêtre relative à la basede données apparaît. Dans la colonne de gauche figurent les "objets"de la base de données. Un mot sur ces objets, qui sont utilisés :
· lestables, pour stocker les données ;
· lesrequêtes, pour retrouver les données ;
· lesformulaires, pour saisir les données ou les visualiser à l'écran ;
· lesétats, pour imprimer les données ;
· lespages, pour communiquer avec la BDD via un navigateur (Internet Exploreruniquement) ;
· lesmacros, pour automatiser des opérations répétitives effectuées sur labase ;
· lesmodules, pour rajouter des fonctionnalités grâce à de la programmation en VBA(Visual Basic for Applications).
Sélectionner l'objet table, s'il ne l'est pasdéjà par défaut. Trois méthodes sont proposées pour créer une nouvelletable :
· créerune table en mode création. C'est la méthode générale, la seule que nousrecommandions ;
· créerune table à l'aide de l'assistant. Ce dernier vous offre un certain nombre detables toutes prêtes dont vous pouvez vous inspirer. Cependant, rien neremplace une bonne analyse du problème de stockage des données, suivie d'uneréalisation personnalisée et adaptée ;
· créerune table en entrant des données. Une table toute prête vous est proposée, danslaquelle vous pouvez immédiatement saisir des données, le logiciel se chargeantde déterminer leur type et leur format. Cette façon de procéder est déplorable,et nous la déconseillons absolument, sauf pour des essais sans suite.
En mode création, une fenêtres'ouvre qui permet de définir la table champ par champ, en précisant le nom duchamp et le type de données qu'il contient.
3 - Les types de données
Tous les SGBD offrent lapossibilité de stocker du texte, de l'information numérique, et des dates (avecou sans les heures). Le type "monétaire" est un cas particulierd'information numérique, et le lien hypertexte un cas particulier de texte.Lorsque l'on utilise Access, une liste déroulante propose les types de donnéessuivants :
· texte(type par défaut)
· mémo(texte contenant plus de 255 caractères)
· numérique
· date/heure
· monétaire(cas particulier du numérique)
· numéroauto: numérotation automatique, séquentielle ou aléatoire
· oui/non,c'est à dire booléen (deux valeurs possibles seulement)
· objetOLE : pour le stockage des données numériques
· autresque le texte, les nombres les dates
· lienhypertexte : cas particulier du type texte
Le tableau ci-dessous préciseles propriétés de ces différents types. Il est nécessaire, à ce stade, d'effectuerles bons choix. Si l'on modifie ultérieurement le type de données d'un champ,alors que la table contient déjà des informations, ces dernières risquentd'être tronquées ou perdues.
| Type | Propriétés | Taille |
| Texte | Le champ peut contenir n'importe quel caractère alphanumérique (chiffre, lettre, signe de ponctuation). Ce type de données est utilisé pour le texte, mais aussi pour les nombres sur lesquels on n'effectue pas de calculs (code postal, numéro de téléphone) | < 256 caractères |
| Mémo | Le champ peut contenir n'importe quel caractère alphanumérique. Le type mémo est réservé aux champs de type texte susceptibles de contenir plus de 255 caractères | < 65.536 caractères |
| Numérique | Données numériques (non monétaires) susceptibles d'être utilisées dans des opérations mathématiques | 1 à 16 octets |
| Date/heure | Données de date et/ou d'heure (pour les années comprises entre 100 et 9999) | 8 octets |
| Monétaire | Données monétaires, présentées avec deux chiffres après la virgule, et le symbole monétaire du pays (€ pour la France) | 8 octets |
| NuméroAuto | Numérotation automatique, séquentielle (commençant à 1) ou aléatoire. Souvent utilisée pour générer le code des enregistrements | 4 octets (entier long) |
| Oui/non | Variable booléenne (deux valeurs possibles uniquement) | 1 bit |
| Objet OLE | Pour lier un objet extérieur, ou incorporer un objet dans la base. Souvent utilisé pour les données multimédia. Peut servir pour tout fichier binaire (document Word, feuille de calcul Excel, etc.) | < 1 Go |
| Lien hypertexte | Permet d'enregistrer des URL de sites web et des adresses de courrier électronique | < 2049 caractères |
Pour sauvegarder votretravail, cliquez sur l'icône
"Enregistrer" dans la barred'outils. Lorsque tous les champs sont définis, fermez la fenêtre, en répondant"non" à la question relative à la clé primaire, et en donnant un nomà la table. Ce nom apparaît désormais dans la fenêtre relative à la base dedonnées. Nous verrons, au chapitre 4, à quoi set la clé primaire. Pourmodifier une table, il faut la sélectionner (dans la fenêtre base de données),puis cliquer sur l'icône
"Modifier". La fenêtre s'ouvre enmode création comme précédemment. Pour supprimer une table, il faut lasélectionner et utiliser la fonction "supprimer" (clic droit) ou latouche du même nom.
4 - Les propriétés deschamps
La partie inférieure de lafenêtre du mode création est intitulée "Propriétés du champ". Cespropriétés se trouvent rassemblées dans l'onglet "Général". La listedes propriétés d'un champ dépend du type de données choisi, mais une propriétédonnée peut apparaître pour des types de données différents. Exemple : lapropriété "Taille du champ" apparaît pour les types de données"Texte", "Numérique"et "NuméroAuto". Lesprincipales propriétés sont :
· Tailledu champ ;
· Format: définit la manière dont les informations s'affichent. Exemple : leformat monétaire affiche deux chiffres après la virgule, puis un espace et lesymbole de l'euro ;
· Masquede saisie : guide la saisie des données et exerce un contrôle. Exemple :un code postal français est composé de cinq chiffres ;
· Légende: définit le nom de l'étiquette dans le formulaire associé à la table. Il estpréférable d'implémenter cette propriété au niveau du formulairelui-même ;
· Valeurpar défaut : valeur qui s'affiche dans le champ avant saisie parl'utilisateur ;
· Validesi : condition de validité du champ. Exemple : une notation sur 20 doitêtre comprise entre 0 et 20 ;
· Messagesi erreur : ce message s'affiche si la condition de validité précédente n'estpas satisfaite ;
· Nullinterdit : le champ correspondant ne peut rester vide lors de la saisie d'unenregistrement ;
· Chaînevide autorisée : le champ peut contenir une chaîne ne comportant aucuncaractère ;
· Indexé: un fichier index est associé au champ de telle sorte que les recherchesd'information s'effectuent plus rapidement. Le chapitre 3 explique cequ'est un index, et comment on le crée ;
· Compressionunicode : un octet suffit pour saisir un caractère (pour les alphabets utilisésdans l'Europe de l'ouest et dans le monde anglophone).
Remarque 1 : la propriété"mode IME" concerne l'usage d'Access en japonais, et ne nousintéresse donc pas ici.
Pour faire fonctionnercorrectement certaines requêtes, il est important de bien comprendre ladifférence entre la valeur Null, une chaîne vide et une chaîne blanche. Unchamp d'un enregistrement :
· possèdela valeur Null si aucune information n'a été introduite, ou si l'informationprésente a été supprimée ;
· contientune chaîne vide si on a défini la valeur par défaut du champ à l'aide de deuxguillemets contigus (""), et si aucune information n'a été introduite(ou si l'information introduite a été supprimée) ;
· contientune chaîne "blanche", si un ou plusieurs espaces ont été introduitset n'ont pas été supprimés.
· Ladéfinition de certaines propriétés des champs soulève des problèmes de syntaxe.La touche F1 fournit une aide contextuelle, c'est à dire liée à la position ducurseur.
5 - Saisir les données
Pour introduire des données dans une table, ilfaut l'ouvrir en mode "feuille de données". Dans la fenêtre base dedonnées (l'objet table étant sélectionné),
on peut :
· faireun double clic sur le nom de la table ;
· sélectionnerla table, et cliquer sur l'icône
"Ouvrir" ;
· faireun clic droit sur la table et sélectionner "Ouvrir" dans la listedéroulante.
Sur le plan pratique, pourpasser facilement du mode "création" au mode "feuille dedonnées" ou vice versa, il suffit de cliquer sur l'icône"affichage" représentée ci-contre. Cette icône est présente dès quel'on se trouve déjà dans l'un des deux modes précités.
On peut ainsi vérifier le bonfonctionnement des listes, formats, masques de saisie, etc. On notera que lecontrôle des informations se fait lors du passage à l'enregistrement suivant.Par exemple, si une liste est obligatoire, une information qui ne fait paspartie de la liste ne sera rejetée qu'au passage à la ligne suivante. Avecl'affichage d'un message qui, selon les bonnes traditions de l'informatique,risque fort d'être sibyllin...
6 - Conclusion
Il est essentiel de bien réaliser que, dansles BDD, les tables se présentent sous un double aspect. C'est ainsi qu'il fautdistinguer :
· l'aspectstructure : noms des champs, types de données, propriétés, listes -- en bref, toutce qui est défini dans le mode "création" de la table ;
· l'aspectcontenu : les valeurs introduites dans les champs des divers enregistrements,en mode "feuille de données".
Nous rencontrerons aussi cedouble aspect à propos des requêtes. Lors des opérations d'import/export, lesystème nous demandera si seule la structure est transportée, ou si les donnéesdoivent suivre.
Chapitre 3 : Les index
1 - Introduction
Les bases de données prennentsouvent des proportions importantes, voire considérables. Si une recherched'information dans une table s'effectue de manière simplement séquentielle(c'est à dire en examinant toute la table, ou du moins tous les champsconcernés, du début jusqu'à la fin), le temps d'attente peut devenir prohibitifpour l'opérateur. L'index est l'outil qui permet de résoudre ce problème.
La notion d'index est trèsancienne. Elle semble remonter à la grande bibliothèque d'Alexandrie, célèbredans l'Antiquité, mais malheureusement détruite par un incendie lors de laconquête de l'Égypte par les arabes. Cette bibliothèque s'était dotée d'unindex par auteurs et d'un index par matières pour faciliter les recherches deses lecteurs parmi les nombreux ouvrages (en papyrus) qu'elle possédait.
Imaginons une bibliothèquedans laquelle les livres sont rangés n'importe comment -- au fur et à mesure deleur acquisition, par exemple. Pour rechercher un livre dont on connaît letitre, il faut parcourir rayons dans l'ordre (recherche séquentielle). Ou l'onfinit par trouver (ouf !), ou l'on arrive bredouille au dernier rayonnageet on en conclut que la bibliothèque ne possède pas l'ouvrage.
Bien entendu, personne nesera jamais assez sot pour organiser une bibliothèque de pareille façon. Leslivres seront rangés par ordre alphabétique du titre, par exemple. Si le titreque nous recherchons commence par un L, nous irons vers le rayon du milieuet nous examinerons un ouvrage. Si son titre commence par un P, nousconclurons que nous sommes allés trop loin. Nous reculerons quelque peu, etnous réitérerons notre démarche. Nous arriverons beaucoup plus vite queprécédemment à trouver le livre que nous recherchons, ou à conclure qu'il n'estpas dans la bibliothèque, parce que nous pratiquons une méthode dichotomique(quelque peu optimisée), qui nous permet d'arriver au résultat en n'examinantqu'une petite fraction des livres contenus dans la bibliothèque. Nous pouvonspratiquer une technique efficace de recherche parce que les livres constituentun ensemble ordonné. Dans un ensemble désordonné, on ne peut pratiquer qu'unerecherche séquentielle, beaucoup plus lente. Mais... comment ferons-nous sinous recherchons un livre dont nous connaissons l'auteur, mais pas letitre ? Les livres de la bibliothèque ne peuvent pas être triés à la foispar ordre alphabétique de leur titre, et celui de leur auteur. C'est iciqu'intervient la notion d'index. Pour chaque livre, nous créons une fiche surlaquelle nous inscrivons le nom de l'auteur et le titre du livre. Puis nousrangeons ces fiches par ordre alphabétique des noms d'auteur. Pour rechercherle livre d'un auteur donné, nous compulsons les fiches. Comme elles constituentun ensemble ordonné, l'opération est rapide ; ou nous obtenons le titre dulivre, ou nous concluons que le livre ne se trouve pas dans la bibliothèque.Dans le premier cas, nous nous rendons dans les rayons munis du titre, et commeles livres sont classés par ordre alphabétique de leur titre, notre trouvonsrapidement l'ouvrage en question. Imaginons maintenant que la bibliothèque soitgérée par ordinateur. Si la table qui contient les livres est triée par ordrealphabétique des titres, il faut que nous construisions un index informatiquesur le champ auteur pour que la recherche d'un livre dont on connaît l'auteurs'effectue rapidement. Car l'ordinateur est programmé à l'image de ce que fontles humains : dans un ensemble non trié il recherche séquentiellement,alors que dans un ensemble trié il recherche par dichotomie. Dans le secondcas, il va beaucoup plus vite. Comme pour l'ensemble de ce cours, nousutilisons le SGBD Access comme support pratique.
2 - Le fonctionnement del'index
Nous disposons maintenant d'un ordinateur pourgérer la bibliothèque. Au fur et à mesure que nous achetons des livres, nousles numérotons dans l'ordre. Puis nous saisissons dans la table d'une BDD lesdonnées qui les caractérisent (numéro, titre, auteur, éditeur, année d'édition,ISBN, etc.), et nous les rangeons sur les rayons dans l'ordre de leur numéro.La table se présente ainsi :
| N° | Titre | Auteur | Éditeur | Année | ISBN | etc. |
| 1 | Mon jardin | J. Machin | Eyrolles | 1998 | 5-1234-4321-8 | ... |
| 2 | Access | A. Chose | Dunod | 2002 | 3-6789-9876-2 | ... |
| 3 | Les écoles | S. Truc | Lattès | 2001 | 4-1985-5891-3 | ... |
| 4 | etc. | | | | | |
En informatique, un index estreprésenté par une table à une seule colonne, comme on le voit sur la figureci-dessous. Dans le premier index (index sur le titre), le premier titre parordre alphabétique correspond au livre n° 2 (Access), suivi du livren° 3 (Les écoles) et du livre n° 1 (Mon jardin). Les autres index s'interprètentde la même façon.
| | | | | | | | | |
| Index titre | Index auteur | Index éditeur | Index année | Index ISBN |
L'index présente desavantages :
- il accélère les recherches d'information. En effet, l'index est une représentation de la table, triée sur un champ donné. On peut donc lui appliquer les méthodes connues de recherche rapide sur un ensemble ordonné (c'est le SGBD qui se charge de l'opération, laquelle est transparente pour l'opérateur) ;
- il est de taille très inférieure à celle de la table : on peut le remettre à jour en temps réel à chaque modification de cette dernière ;
- il peut servir à empêcher l'opérateur de créer des enregistrements dupliquées en saisissant deux fois, par erreur, les mêmes données. Nous reviendrons sur ce point au paragraphe suivant.
L'index ne possède pas quedes avantages. Voici pour ses inconvénients :
- chaque fois que nous demandons au système de créer (et de maintenir) un index, nous augmentons sa charge de travail, et par conséquent nous le freinons. Ainsi, les opérations de saisie et de maintenance sont ralenties par la présence d'index, car ces derniers doivent être mis à jour immédiatement ;
- un index occupe de la place en mémoire sur le disque. En fait, ce dernier argument a beaucoup perdu de sa valeur avec le temps, parce que la mémoire de masse des ordinateurs ne cesse de croître rapidement, et qu'elle est devenue si bon marché (son coût à l'octet est divisé par deux tous les deux ans environ) qu'on la gaspille allégrement.
L'informatique permet decréer des index sur plusieurs champs. Imaginons que nous ayons séparé le nom etle prénom de l'auteur, par exemple. Un index sur les deux champs nom et prénomcorrespond en fait à l'index créé sur un champ unique dans lequel nous aurionsconcaténé le nom et le prénom.
3 - Les doublons
On appelle "doublon" une informationqui apparaît au moins deux fois dans une table. La notion de doublonss'applique à une colonne donnée, ou à plusieurs colonnes, ou à la totalité descolonnes d'une même table (figure ci-dessous). Dans ce dernier cas, nous avonsaffaire à deux enregistrements (ou plus) identiques, une situation qu'il fauttoujours considérer comme anormale.
| A | B | C | | 1 | aa | $ | | 2 | bb | % | | 3 | cc | + | | 1 | dd | - | | | A | B | C | | 1 | aa | $ | | 2 | bb | % | | 3 | cc | + | | 1 | aa | - | | | A | B | C | | 1 | aa | $ | | 2 | bb | % | | 3 | cc | + | | 1 | aa | $ | |
| Doublon sur une colonne | Doublon sur deux colonnes | Enregistrement dupliqué |
Dans une BDD, lesenregistrements dupliqués peuvent provenir de deux sources :
- les erreurs de saisie. Le taux des erreurs humaines est de l'ordre de un à quelques pourcents. Il est inévitable que, de temps en temps, un opérateur tente d'introduire dans une BDD des informations qui s'y trouvent déjà. Il est normal de confier au SGBD le soin de l'en empêcher ;
- la manipulation des informations contenues dans la base. Considérons par exemple la table qui illustre ci-dessus le cas du doublon sur deux colonnes. Si, pour une raison quelconque, nous supprimons la troisième colonne, nous transformons ce doublon sur deux colonnes en un enregistrement dupliqué, dont la présence peut être souhaitée (comptage), inutile ou nuisible suivant les cas.
Lorsque nous introduisons del'information dans une table pourvue d'un index, le SGBD met ce dernier à jouren temps réel. Au cours de cette opération, il peut détecter facilement sicette nouvelle information constitue un doublon sur les champs concernés. Ilest donc aisé de doter le SGBD d'une fonction permettant, si on le désire,d'empêcher la validation de la saisie d'un enregistrement constituant undoublon. Nous reviendrons, dans les chapitres relatifs aux requêtes, sur leproblème de la création de doublons indésirables lors de la manipulation desinformations d'une BDD.
4 - L'indexation d'un champ
Dans le chapitre consacré auxtables, nous avons rencontré la "Propriété du champ" intitulée"Indexé", pour tous les types de données sauf "Objet OLE".Quand nous cliquons dans la zone de texte correspondante, une liste déroulantenous est proposée, qui contient les trois choix suivants :
- Non
- Oui - Avec doublons
- Oui - Sans doublons
Pour créer un index sur lechamp correspondant, il suffit de répondre "Oui", avec ou sansdoublon selon le cas. Si nous conservons la valeur "Non" par défaut,aucun index ne sera créé. Il est inutile de ralentir le fonctionnement dusystème lors de la saisie des données, si cela ne nous fait pas gagner du tempsultérieurement. Il est donc préférable de répondre "Non" dans les cassuivants :
- la table considérée contient peu d'enregistrements ;
- nous effectuons rarement (voire jamais) de recherche dans ce champ ;
- nous ne trions jamais la table sur ce champ ;
- il est normal que le champ contienne des doublons. Ainsi, il est totalement inutile d'indexer un champ booléen, bien que ce soit techniquement possible.
Dans les cas contraires, lacréation d'un index présente de l'intérêt. Se pose alors le problème de savoirsi nous admettons ou non les doublons :
- si les doublons ne posent pas de problème (ex : homonymie), nous choisirons l'option "Avec doublons". Ceci dit, indexer dans le seul but de rendre les recherches plus rapides, sans chercher à empêcher les fautes de saisie, peut constituer dans certains cas une erreur ;
- dans le cas général, nous choisirons l'option "Sans doublons", ce qui aura pour effet de nous empêcher de créer des doublons par mégarde. Le système refusera de valider l'enregistrement fautif (lors du passage à la ligne suivante, ou lors de la fermeture de la table).
Rappelons pour mémoire qu'unchamp doté d'une clé est toujours indexé sans doublons. Or une table ne peutcontenir qu'une seule clé, alors qu'elle peut être dotée de plusieurs index. Ilfaut donc réserver la clé pour la réalisation des relations, et ne pasl'utiliser comme index.
5 - La création d'un indexmulti-champ
Dans une table contenant desdonnées relatives à plusieurs milliers de personnes, le risque d'homonymiedevient important. A fortiori dans une plus grande table, celle représentantl'annuaire téléphonique d'une grande ville par exemple. Pour accepterl'homonymie tout en rejetant les doublons dus à des erreurs de saisie, onutilise un index basé sur plusieurs champs. Si la probabilité de trouver deuxfois "Dupont" est importante, celle de trouver deux fois "DupontJean" est déjà nettement plus faible, et celle de trouver deux fois"Dupont Jean né le 12/06/1978" est pratiquement nulle. En créant unindex sur deux champs (Nom + Prénom) ou sur trois champs (Nom + Prénom + Datede naissance), on peut rejeter les doublons dus à des erreurs de saisie tout entolérant parfaitement l'homonymie. On notera que le SGBD Access permet degrouper dix champs au maximum dans un index multi-champ, mais qu'on ne dépassepratiquement jamais la valeur trois. Pour créer un index multi champ, il fautse trouver en mode création de la table, et cliquer sur l'icône
"Index". Une fenêtre s'ouvre, etl'on procède aux opérations suivantes :
- dans la colonne de gauche, on donne un nom à l'index multi-champ ;
- dans la colonne médiane, on écrit les uns sous les autres les noms des champs constitutifs de l'index ;
- dans la colonne de droite, on précise l'ordre de tri. Par défaut, on conserve "Croissant" ;
- on clique sur le nom de l'index puis, dans la moitié inférieure de la boite, intitulée "Propriétés de l'index", on fixe à "Oui" la propriété "Unique" si l'on désire interdire les doublons.
La figure ci-dessousreprésente l'état de la boite de dialogue en fin de saisie, dans le cas simpleoù seulement deux champs ("Nom" et "Prénom") sontconcernés.
Plusieurs index multi-champpeuvent coexister dans une même table. Ils peuvent également cohabiter avec uneclé. Tout ce petit monde se retrouve listé dans la fenêtre de définition desindex. L'index relatif à une clé se repère à l'icône correspondante dans lacolonne (grisée) la plus à gauche, à son nom "PrimaryKey", et par lefait que la propriété "Primaire" affiche "Oui", comme lemontre la figure ci-dessous.
On notera pour terminer que,si un champ fait partie d'un index multi-champ, sa propriété "Indexé"vaut "Non". C'est normal, il ne faut rien y changer.
6 - Conclusion
Les index jouent un rôlediscret mais important dans la gestion des BDD. La décision de créer un indexrésulte de l'examen des avantages et inconvénients de cette opération. L'indexralentit les saisies et consomme un peu de place, mais il rend les tris et lesrecherches d'information plus rapides. Bien entendu, il est inutile de créer unindex sur quelque champ que ce soit dans une table qui renferme très peud'enregistrements. L'index joue un rôle important dans l'élimination desdoublons résultant d'erreurs de saisie.
Chapitre 4 : Les listes de choix
1 - Introduction
Considérons l'exemple d'une table (que nousappellerons "Personnes") constituée comme le montre l'exempleci-dessous.
| Nom | Prénom | Titre | Adresse | Commune | Code postal |
| Durand | Pierre | M. | 31 rue des champs | Uriage | 38410 |
| Chose | Stéphanie | Melle | 2 place Stanislas | Nancy | 54000 |
| Trombe | Jean | M. | 18 cours de la libération | Grenoble | 38001 |
| Machin | Andrée | Mme | 10 cours Berriat | Grenoble | 38000 |
| etc. | | | | | |
Il est tout à fait fastidieuxde saisir de nombreuses fois la même information, telle que celle du titre(Mme, Melle, M.). En outre, si la liste est assez longue, le même nom decommune sera saisi à plusieurs reprises -- avec le risque d'une faute defrappe, suivie d'une erreur si l'on effectue dans la table des recherchesbasées sur le nom de la commune. Enfin, on n'est pas à l'abri d'une erreur desaisie conduisant à associer à une commune un code postal erroné. Pour éviterde saisir plusieurs fois le titre ou le même nom de commune, nous pouvonsl'enregistrer dans une table séparée, et travailler ensuite par copier/coller.C'est encore mieux s'il nous suffit d'indiquer au système où se trouve l'informationcorrespondante pour l'enregistrement que nous sommes en train de renseigner.Pour ce faire, certains SGBD sont dotés d'un outil appelé liste de choix (ouplus simplement liste), que nous allons maintenant examiner. Comme dans lechapitre précédent de ce cours, nous utiliserons le SGBD Access comme supportpratique.
2 - La liste simple (listeinterne)
Dans un premier temps, nous créons une table"Personnes" contenant seulement les trois champs "Nom","Prénom" et "Titre", possédant tous le type de donnéestexte. Nous allons faire en sorte de faire écrire le titre par le système lorsdu remplissage de la table.
- nous choisissons l'option "Je taperai les valeurs souhaitées". Il ne serait pas raisonnable, en effet, de créer une table pour y introduire seulement trois abréviations ;
- nous conservons le nombre de colonnes égal à 1. Nous saisissons les trois valeurs (M., Mme, Melle) les unes sous les autres dans la colonne intitulée "Col1" (utiliser la tabulation ou les flèches pour passer d'une valeur à l'autre). Enfin, nous réglons la largeur de la colonne, en la saisissant par le haut de son bord droit ;
- nous laissons le choix au système du nom de la liste (l'étiquette), et l'opération est terminée.
Dans la fenêtre de définitionde la table, aux "Propriétés du champ", onglet "Liste dechoix", nous trouvons les informations représentées sur la figuresuivante :
Commentons ces propriétés :
- Afficher le contrôle : Zone de liste déroulante. Une liste non déroulante conviendrait tout aussi bien, puisque la liste est fort courte, et le système ne nous proposera pas de barre de défilement. Mais attention : choisir "zone de texte" conduit à supprimer la liste, et il faudra la recréer ;
- Origine source : Liste valeurs. Pour nous rappeler que nous avons saisi la liste directement dans l'assistant ;
- Contenu : "M.";"Mme";"Melle". Les trois termes saisis sont rassemblés ici, séparés par des points-virgules, et mis entre guillemets pour rappeler qu'il s'agit de chaînes de caractères ;
- Colonne liée : 1. La colonne liée (ici la première colonne) est celle qui contient l'information que le système copiera / collera pour nous ;
- Nbre colonnes : 1. Nous n'avons demandé qu'une seule colonne ;
- En-têtes colonnes : Non. Sans objet pour nous ;
- Largeurs colonnes : 1 cm (par exemple). C'est la valeur que nous avons fixée dans l'assistant ;
- Lignes affichées : 8. C'est la valeur par défaut, mais le système limitera aux seules trois lignes utiles ;
- Largeur liste : 1 cm. C'est la largeur de l'unique colonne. La valeur "auto" convient également ;
- Limiter à liste : Non. C'est la valeur proposée par défaut. Nous reviendrons sur ce choix au paragraphe suivant.
Enregistrons et passons enmode "feuille de données" pour introduire du contenu dans la table.Quand nous cliquons dans le champ "Titre", l'icône
de la liste apparaît. Si nous cliquonsdessus, la liste que nous avons saisie nous est proposée telle quelle par lesystème pour remplir le champ "Titre". Il suffit que nous cliquionssur la valeur désirée pour que le système l'inscrive à notre place, comme lemontre la figure ci-dessous.