MS Office Access

Embed Size (px)

DESCRIPTION

Notes de cours

Citation preview

MS OFFICE ACCESS 95-2010 V19.6 Revision 989 Please consider the environment - do you really need to print this document!? Vincent Isoz 2012-03-16 Vincent Isoz MS Office Access 1/502 Remarques: Pour qu'il soit utilisable d'une manire rationnelle et sans danger, ce support qui constitue un "super condens" d'un expos qui tiendrait trs facilement sur plusieurs milliers de pages (voir les ouvrages de cette taille disponible sur le commerce) et qui constitue une suite logique de mon livre sur la gestion de projets doit absolument tre complt par de nombreuses notes et exposs oraux, au cours desquels les notions nouvelles sont prsentes au moyen de situations concrtes et illustres par de nombreux exemples dont lechoix dpend essentiellement du droulement de la formation afin d'exciter l'esprit critique des apprenants. Ce support correspond une formation d'environ 15 jours 6.5 heures par jour pour un groupe de 6 personnes. Ce qui est vu dans ce support peut tre appliqu toutes les versions antrieures MS Access 2007. Je ne mettrai donc pas ce document jour pour qu'il corresponde la version 2007 (sauf pour les nouveauts). Je tiens galement m'excuser du fait que ce document mlange les captures d'cran d'un grand nombre de versions de MS Access (97 2010) et en plus de diffrentes langues (franais + anglais). Effectivement, mon mtier m'oblige constamment changer d'ordinateur et ainsi le contenu des documents que je rdige. J'espre que le lecteur comprendra en attendant une uniformisation. Il y a de nombreuses marques dposes qui sont nommes dans le prsent support. Plutt que d'utiliser le symbole du trademark sur chaque occurrence de marque nomme, j'ai choisi d'utiliser le nom seul uniquement dans un souci d'esthtique ditoriale (ce qui devrait aussi bnficier au propritaire de la marque), sans aucune intention de violer une quelconque rglementation ou lgislation. Pour terminer, je voudrais remercier ici les quelques collgues (Olivier Weber, Fabrice Fournier) et clients qui ont bien voulu me faire part de leurs remarques pour amliorer le contenu de ce livre lectronique. Il est cependant certain qu'il est encore perfectible sur de nombreux points. Si vous souhaitez tre inform des nouvelles versions majeures de ce document n'hsitez pas m'crire un mail dans ce sens: [email protected]. Vincent Isoz MS Office Access 2/502 TABLE DES MATIRES Contents TABLE DES MATIRES ............................................................................................................ 2 1 Liens internet ......................................................................................................................... 10 2 Introduction ........................................................................................................................... 11 2.1 Environnement ............................................................................................................................. 13 2.2 Protocole ...................................................................................................................................... 14 2.3 MS Excel (tableur) VS MS Access (SGBDR) ............................................................................. 15 3 Notions de base de donnes .................................................................................................. 17 3.1 Types de BDD ............................................................................................................................. 17 3.2 Vues d'une base de donnes ......................................................................................................... 18 3.3 Modules d'un SGBDR ................................................................................................................. 19 3.4 Mthodes de cration de BDD ..................................................................................................... 20 3.5 Modle entit-relation (MER) ..................................................................................................... 22 3.6 Normalisation .............................................................................................................................. 24 3.6.1 Premire forme normale ...................................................................................................... 25 3.6.2 Deuxime forme normale .................................................................................................... 26 3.6.3 Troisime forme normale .................................................................................................... 26 3.6.4 Exercice ............................................................................................................................... 27 3.7 Modlisation de BDD avec MS VISIO ....................................................................................... 28 3.8 Nomenclature de Leszynski/Reddic ............................................................................................ 36 4 Tables .................................................................................................................................... 39 4.1 Liaison MS Excel/CSV ................................................................................................................ 41 4.2 Cration de tables ........................................................................................................................ 42 4.3 Formulaire simple (auto-form) .................................................................................................... 44 4.4 Contrle des donnes ................................................................................................................... 45 4.4.1 Lgende ............................................................................................................................... 45 4.4.2 Types de donnes (Typages) ............................................................................................... 47 4.4.3 Formats ................................................................................................................................ 51 4.4.4 Masques de saisie ................................................................................................................ 52 4.4.5 Validation (Valide Si) .......................................................................................................... 55 4.5 Import MS Excel .......................................................................................................................... 59 4.6 Import MS ACCESS .................................................................................................................... 60 4.7 Import/liaison MS Outlook .......................................................................................................... 61 4.8 Format des tables ......................................................................................................................... 64 4.9 Outil recherche ............................................................................................................................. 65 4.10 Proprits des tables................................................................................................................... 66 4.11 Tris et filtres ............................................................................................................................... 67 4.11.1 Critres numriques et textes ............................................................................................. 68 4.11.2 Critres numriques et dates .............................................................................................. 68 4.11.3 Caractres gnriques (wildcards) ..................................................................................... 68 4.11.4 Fonctions gnriques ......................................................................................................... 69 4.11.5 Tris et filtres avancs ......................................................................................................... 70 5 Relations (jointures) .............................................................................................................. 71 5.1 Assistant liste de choix ................................................................................................................ 71 5.1.1 Assistant liste de choix (ALC) statique ............................................................................... 71 5.1.1.1ALC statique choix unique de type zone de liste droulante ..................................... 71 5.1.1.2ALC statique choix unique de type zone de liste ....................................................... 74 5.1.1.3ALC statique choix unique de type liste droulante extensible ................................. 76 5.1.1.4ALC statique choix multiple de type liste droulante extensible ............................... 78 5.1.2 Assistant liste de choix (ALC) li ........................................................................................ 79 Vincent Isoz MS Office Access 3/502 5.1.2.1ALC statique li choix unique de type zone de liste droulante ................................ 80 5.2 Relation un un ........................................................................................................................... 85 5.3 Relation un plusieurs ................................................................................................................. 86 5.4 Relation plusieurs plusieurs ...................................................................................................... 90 5.5 Relation "simple" (sans intgrit rfrentielle) ............................................................................ 90 5.6 Relation avec intgrit rfrentielle ............................................................................................. 90 5.7 Relation circulaire (auto-liaison) ................................................................................................. 96 5.8 Relations d'hritage et composites ............................................................................................... 98 5.9 Index simples et combins ........................................................................................................... 99 6 Formulaires (simples) ......................................................................................................... 102 6.1 Filtre par formulaire ................................................................................................................... 102 6.2 Formulaire en mode design ........................................................................................................ 106 6.3 Cration de boutons de formulaires ........................................................................................... 106 6.4 Filtres requtes ........................................................................................................................... 106 6.5 Outil recherche ........................................................................................................................... 106 6.6 ComboBox de recherche ............................................................................................................ 107 6.7 Groupes d'options ...................................................................................................................... 109 6.8 Champs calculs ........................................................................................................................ 111 6.9 ListBox de recherche ................................................................................................................. 111 6.10 Fonction DSum ........................................................................................................................ 112 6.11 Fonction DCount ..................................................................................................................... 113 6.12 Fonction IIf (formulaire) .......................................................................................................... 114 6.13 Fonctions d'environnement ...................................................................................................... 114 6.14 Fonction DLookUp .................................................................................................................. 114 6.15 Onglets ..................................................................................................................................... 116 6.16 Valeurs par dfaut et filtres ...................................................................................................... 118 7 Requtes (simples) ............................................................................................................... 120 7.1 Optimisation des requtes .......................................................................................................... 122 7.2 Requte simple (de projection) .................................................................................................. 123 7.3 Tris dans les requtes ................................................................................................................. 123 7.4 Requte multitable sans liaisons ................................................................................................ 125 7.5 Requte multitable avec liaisons ................................................................................................ 126 7.6 Requte de distinction ................................................................................................................ 127 7.7 Cinq premiers ............................................................................................................................. 127 7.8 Requte avec critre ................................................................................................................... 128 7.9 Requte concatnation dans liste de choix ................................................................................. 129 7.10 Colonne calcule ...................................................................................................................... 130 7.11 Critres multiples ..................................................................................................................... 130 7.12 Calcul de synthse (d'agrgation) ............................................................................................ 131 7.13 Regroupement et calculs .......................................................................................................... 132 7.14 Requte et macro d'export ....................................................................................................... 134 7.15 Requte mise--jour ................................................................................................................. 136 7.16 Requte mise--jour (Rechercher/Remplacer) ......................................................................... 138 7.17 Requtes de synthse ............................................................................................................... 139 7.18 Requte d'union ....................................................................................................................... 141 7.19 Requte de comptage ............................................................................................................... 144 7.20 Requte d'union (bis) ............................................................................................................... 146 7.21 Requtes de requtes ................................................................................................................ 147 7.22 Divers ....................................................................................................................................... 149 8 tats-formulaires (complexes) ............................................................................................ 150 8.1 Carnet d'adresse ......................................................................................................................... 152 8.2 Synthse et requte .................................................................................................................... 154 8.3 Sous-tats ................................................................................................................................... 156 8.4 Rapports avec groupes (pour lettres ou factures) ....................................................................... 160 8.5 Rapport paramtr par formulaire .............................................................................................. 165 Vincent Isoz MS Office Access 4/502 8.6 Objet ActiveX ............................................................................................................................ 167 8.7 Graphique statistique insr ....................................................................................................... 168 8.8 Graphique insr ........................................................................................................................ 173 8.9 Tableaux croiss dynamiques .................................................................................................... 173 8.10 Graphiques croiss dynamiques ............................................................................................... 174 9 Requtes (complexes) .......................................................................................................... 175 9.1 Requtes avec jointures ............................................................................................................. 175 9.2 Requte regroupement par premiers lments ........................................................................... 177 9.3 Requte avec critres ................................................................................................................. 179 9.4 Requte d'analyse de frquence (contingence) .......................................................................... 180 9.5 Requte paramtre.................................................................................................................... 181 9.6 Requte d'ajout........................................................................................................................... 183 9.7 Requte de suppression .............................................................................................................. 184 9.8 Requte d'analyse croise (avec assistant) ................................................................................. 184 9.9 Requte d'analyse croise (sans assistant) ................................................................................. 185 9.10 Requte d'analyse croise temporelle ...................................................................................... 186 9.11 Requte d'analyse croise paramtre ...................................................................................... 187 9.12 Requte doublons ..................................................................................................................... 188 9.13 Requte de suppression des doublons d'enregistrements ......................................................... 189 9.14 Requte de non correspondance .............................................................................................. 190 9.15 Requtes de cration (mode SQL) ........................................................................................... 191 9.16 Requte de distribution en % sur comptage ............................................................................. 192 9.17 Requte de distribution en % sur somme ................................................................................. 193 9.18 Requte de cumul chronologique ............................................................................................ 194 9.19 Requte systme ...................................................................................................................... 195 9.20 Requtes de statistique inferentielle ........................................................................................ 195 9.21 Requtes moyenne mobile et somme cumule ........................................................................ 197 9.22 Requtes de data mining (RNF) ............................................................................................... 199 9.23 Analyse simple de portefeuilles ............................................................................................... 199 10 Fonctions ........................................................................................................................... 202 10.1 Relation d'ordre comme validation d'un record (table) ............................................................ 202 10.2 Fonctions Date comme valeur par dfaut (tables) ................................................................... 203 10.3 Fonctions Now comme valeur par dfaut (tables) ................................................................... 204 10.4 Fonctions d'environnement (tables) ......................................................................................... 204 10.5 Fonction textes Left, Right, Instr (requte) .............................................................................. 205 10.6 Fonctions textes UCase, LCase, &, TRIM, StrConv (requte) ................................................ 206 10.7 Fonctions replace et MID (requte) ......................................................................................... 208 10.8 Fonctions de dates Year, Day, Month (requte) ...................................................................... 210 10.9 Fonction de formatage de dates et DatePart (requte) ............................................................. 211 10.10 Fonction de date DateDiff (requte) ...................................................................................... 213 10.11 Calculs de jours avec DateAdd (Formulaire) ......................................................................... 213 10.12 Fonction Logique IIf (formulaire) ......................................................................................... 215 10.13 Fonctions d'arrondi Round (requte) ..................................................................................... 216 10.14 Fonction conditionnelle Switch (requte) .............................................................................. 216 10.15 Fonctions IsNull et NZ (requte) ........................................................................................... 218 10.16 Fonction DSum (formulaire) ................................................................................................. 220 10.17 Fonction DCount (formulaire) ............................................................................................... 222 10.18 Fonction DLookUp (formulaire) ........................................................................................... 223 10.19 Fonctions Count et DCount (requte) .................................................................................... 224 10.20 Fonction Dsum (requte) ....................................................................................................... 225 10.21 Fonction Dsum et Dates (requte) ......................................................................................... 226 11 Interfacage de l'application .............................................................................................. 228 11.1 Proprits des formulaires ....................................................................................................... 228 11.2 Proprits des champs de formulaires...................................................................................... 230 11.3 Sous-formulaires (Assistant) .................................................................................................... 232 Vincent Isoz MS Office Access 5/502 11.4 Champs calculs ...................................................................................................................... 234 11.5 Sous-formulaires (Bote outils contrle) ............................................................................... 235 11.6 Formatage ................................................................................................................................ 237 11.7 Champs OLE ........................................................................................................................... 239 11.8 Esthtique rapports .................................................................................................................. 244 11.9 Formulaire de dmarrage (switchboard) .................................................................................. 245 11.10 Options de dmarrage ............................................................................................................ 247 11.11 Barre d'outils personnalise ................................................................................................... 248 11.11.1 MS Access 2003 et antrieur ......................................................................................... 248 11.11.2 MS Access 2007 et ultrieur .......................................................................................... 250 11.11.2.1Masquer le ruban au dmarrage de MS Access 2007 ........................................ 250 11.11.2.2Masquer le ruban au dmarrage de MS Access 2010 ........................................ 251 12 Finitions lmentaires ....................................................................................................... 252 12.1 Compactage ............................................................................................................................. 252 12.2 Protection par mot de passe ..................................................................................................... 252 12.3 MS Query ................................................................................................................................. 253 12.4 Publipostage ............................................................................................................................. 254 13 Macros ............................................................................................................................... 255 13.1 Macros simples ........................................................................................................................ 256 13.1.1 Excution de requtes en mode cration ......................................................................... 256 13.1.2 Contrle de saisie simple ................................................................................................. 257 13.1.3 Import de donnes ........................................................................................................... 258 13.1.4 Contrles sur formulaires ................................................................................................ 259 13.2 Groupe de macros .................................................................................................................... 261 13.3 Groupe conditionnel de macros ............................................................................................... 262 13.4 Macro AutoExec ...................................................................................................................... 264 13.5 Macros Run Code .................................................................................................................... 265 13.6 Macros Import/Export.............................................................................................................. 267 13.7 Macro ReQuery ....................................................................................................................... 267 13.8 Groupe de macros simple ........................................................................................................ 270 13.9 Groupe de macros complexe .................................................................................................... 273 14 Thorie internet / intranet ................................................................................................. 275 14.1 Formulaire web ........................................................................................................................ 275 15 Optimisation et analyse ..................................................................................................... 279 15.1 Table ........................................................................................................................................ 279 15.2 Performances ........................................................................................................................... 279 15.3 Documenter .............................................................................................................................. 281 16 Distribution ....................................................................................................................... 282 16.1 Fractionnement d'une base ....................................................................................................... 283 17 Securit avance ................................................................................................................ 286 17.1 Dfinition d'un mot de passe .................................................................................................... 286 17.2 Scurit au niveau utilisateur ................................................................................................... 288 17.2.1 Protocole .......................................................................................................................... 288 17.2.2 Mthodes ......................................................................................................................... 289 17.2.3 Modlisation des droits .................................................................................................... 291 17.2.4 Dangers de l'espace de travail "par dfaut": .................................................................... 292 17.2.5 Un peu de VBA avec la scurit ...................................................................................... 309 17.2.6 A propos du fichier ldb .................................................................................................... 312 17.2.7 Problmes de scurit avec les requtes .......................................................................... 312 17.3 Dploiement ............................................................................................................................. 313 18 Synchronisation (rplication) ............................................................................................ 315 18.1 Types de rplicas ..................................................................................................................... 315 18.2 Cration d'un rplica matre ..................................................................................................... 315 18.3 Cration d'un rplica partiel ..................................................................................................... 321 Vincent Isoz MS Office Access 6/502 18.4 Modifications sur les objets de la base de donnes .................................................................. 322 18.5 Comparatif Maitre-Rplica lors de la synchronisation ............................................................ 325 18.6 3 Conflits rencontrs lors de la synchronisation des bases ...................................................... 326 18.6.1 Subtilits de prdominance du matre .............................................................................. 326 19 Visual Basic Application ................................................................................................... 328 19.1 Objectifs ................................................................................................................................... 330 19.2 Historique ................................................................................................................................ 330 19.3 Types de donnes ..................................................................................................................... 331 19.4 Nomenclature de Lezsynski-Reddick ...................................................................................... 334 19.5 Commentaires .......................................................................................................................... 335 19.6 Table des objets VBA et table ASCII ...................................................................................... 337 19.7 Prise en main du V.B.A ........................................................................................................... 340 19.7.1 Exemples gnriques Office ......................................................................................... 341 19.8 Appliquer le filtre par formulaire automatiquement ................................................................ 345 19.9 Appliquer un filtre avec critres sur un formulaire .................................................................. 345 19.10 Dtection formulaire ouvert ................................................................................................... 346 19.11 Dtection de la version et compactage................................................................................... 346 19.12 Cration d'un bouton ouvrant une page web .......................................................................... 346 19.13 Excution de code SQL ......................................................................................................... 347 19.14 Cration d'une table ............................................................................................................... 347 19.15 Import de donnes de MS Excel ............................................................................................ 348 19.16 Export paramtr d'un fichier MS Excel ................................................................................ 348 19.17 Champ de Recherche sur formulaire...................................................................................... 349 19.18 Evnement sur sortie de formulaire (validation des champs de saisie) ................................. 349 19.19 Evnement sur fermeture de formulaire (validation des champs de saisie) ........................... 350 19.20 Focus sur formulaire .............................................................................................................. 351 19.21 Filtres ..................................................................................................................................... 353 19.21.1 Filtre paramtr par bouton ........................................................................................... 353 19.21.2 Filtre paramtr par une zone d'options ......................................................................... 356 19.21.3 Adaptation au filtre par formulaire ................................................................................ 356 19.21.4 Filtres avec boutons a bascule ....................................................................................... 357 19.21.5 Listes droulantes .......................................................................................................... 357 19.21.5.1Filtrage d'une liste droulante sur la base d'un champ ....................................... 358 19.21.5.2Filtrage d'une liste droulante sur la de la saisie dans la liste droulante .......... 358 19.21.5.3Ajout directe d'une donnes dans une liste droulante ...................................... 360 19.22 Liste droulante choix multiples ......................................................................................... 363 19.23 Autres vnements ................................................................................................................. 364 19.24 Fonctions ................................................................................................................................ 367 19.25 Gestion des erreurs ................................................................................................................ 367 19.26 Calendriers ............................................................................................................................. 368 19.27 Identification .......................................................................................................................... 371 19.28 Utilisation de la scurit avec VBA ....................................................................................... 375 19.29 Automation ............................................................................................................................ 378 19.29.1 Ouvrir MS Excel et y faire des tratements ................................................................... 378 19.30 D.A.O. et ADO (avec MS Word ou MS Excel) ..................................................................... 379 19.30.1 D.A.O............................................................................................................................. 379 19.30.1.1Mthodes de lecture et criture de tables et requtes en DAO .......................... 380 19.30.1.2Mise jour de tables DAO ................................................................................ 382 19.30.1.3Recherche VBA DAO ....................................................................................... 383 19.30.1.4Excution requte d'action VBA DAO .............................................................. 384 19.30.2 A.D.O............................................................................................................................. 385 19.30.2.1MS Excel - lecture ADO ................................................................................... 387 19.30.2.2Curseurs adLockReadOnly, adLockPessimistic, adLockOptimistic, adLockBatchOptimistic ........................................................................................................... 387 19.30.2.3MS Excel - Recherche ADO ............................................................................. 389 Vincent Isoz MS Office Access 7/502 19.30.2.4MS Excel - criture ADO ................................................................................. 389 19.30.2.5MS Word - Recherche ADO ............................................................................. 390 19.31 DLookup syntaxe ................................................................................................................... 391 19.32 Etats ....................................................................................................................................... 392 19.33 Requtes ................................................................................................................................. 393 19.33.1 Lecture du contenu d'une Query DAO .......................................................................... 394 19.33.2 ReQuery ......................................................................................................................... 394 19.34 Choix multiple ....................................................................................................................... 395 19.35 Calendrier .............................................................................................................................. 396 19.36 Connexion .............................................................................................................................. 398 19.37 Nouveauts VBA Access 2007-2010 .................................................................................... 399 19.37.1 Connecteur ADODB ...................................................................................................... 399 19.37.2 Export flat-file (schema.ini) ........................................................................................... 400 19.37.3 Mode Hors-Ligne/En-Ligne SharePoint ........................................................................ 400 20 Confusions courantes ........................................................................................................ 401 20.1 Masques VS Valide Si, VBA & Null interdit .......................................................................... 401 20.2 Valide Si VS VBA & Null interdit .......................................................................................... 402 20.3 Null interdit VS VBA .............................................................................................................. 403 20.4 Intgrit VS Limit la liste & VBA ...................................................................................... 403 20.5 Cls primaires combines VS Macro Requery & VBA ........................................................... 404 20.6 tat VS Formulaire A4 ............................................................................................................ 404 20.7 Scurit MDW VS Scurit VBA ........................................................................................... 405 21 VBScript ............................................................................................................................ 406 22 XML XSL ........................................................................................................................ 407 22.1 Import XML ............................................................................................................................. 410 23 Reverse Engineering (rtro-conception) ........................................................................... 414 24 A.S.P. et MDB ................................................................................................................... 417 24.1 Affichage de donnes............................................................................................................... 419 24.2 Ajout de donnes ..................................................................................................................... 420 24.3 Mise jour d'enregistrements .................................................................................................. 421 25 P.H.P. et MDB ................................................................................................................... 425 26 MS Infopath ....................................................................................................................... 428 26.1 Ajout de donnes ..................................................................................................................... 428 26.2 Echange de donnes ................................................................................................................. 434 27 MS SQL Server .................................................................................................................. 445 27.1 Reverse engineering vers SQL server ...................................................................................... 445 27.2 Connexion SQL server .......................................................................................................... 452 28 AS/400 ............................................................................................................................... 456 29 Oracle Express 10g ........................................................................................................... 460 30 MySQL ............................................................................................................................... 465 31 PocketPC ........................................................................................................................... 469 32 Business Objects ................................................................................................................ 474 33 Crystal Reports .................................................................................................................. 480 34 Runtime .............................................................................................................................. 482 35 Raccourcis claviers ........................................................................................................... 483 36 Optimisation de bases de donnes .................................................................................... 487 36.1 Systme FAT (File Allocation System) ................................................................................... 488 36.2 Systme ISAM (Indexed Sequential Access Method) ............................................................. 488 36.3 Arbres ...................................................................................................................................... 490 36.3.1 Arbre B ............................................................................................................................ 490 36.3.2 Arbre B+ .......................................................................................................................... 492 36.3.3 Arbre-R ............................................................................................................................ 494 37 Limites MS Office Access .................................................................................................. 496 Vincent Isoz MS Office Access 8/502 37.1 Limites MS Access 2000+2002+2007+2010 .......................................................................... 496 38 Nouveauts MS Office Access ........................................................................................... 501 Vincent Isoz MS Office Access 9/502 TABLE DES FIGURES Figure 1 Modle Logique de Donnes (MLD) dans MS Visio ................................................ 29 Figure 2 Accs BDD distance (ADP) .................................................................................... 39 Figure 3 Schma (simple) de la BDD ...................................................................................... 92 Figure 4 Exemple de BDD (taille standard) ............................................................................. 95 Figure 5 Requte d'union ....................................................................................................... 144 Figure 6 Calendrier Access .................................................................................................... 167 Figure 7 Tableau crois dynamique ....................................................................................... 173 Figure 8 Schma SQL Server ................................................................................................. 451 TABLE DES TABLEAUX Tableau 1 Type de bases de donnes ....................................................................................... 18 Tableau 2 Lgendes Modlisation BDD .................................................................................. 36 Tableau 3 Codes pour masque de saisie ................................................................................... 53 Tableau 4 Codes de masque de saisie types ............................................................................. 54 Tableau 5 Raccourcis clavier dmarrage ............................................................................... 248 Tableau 6 Stratgies de dploiement ...................................................................................... 283 Tableau 7 Autorisations d'accs une base ........................................................................... 307 Tableau 8 Type de donnes VBA .......................................................................................... 332 Tableau 9 Objets VBA ........................................................................................................... 337 Tableau 10 Tableau ASCII Standard ..................................................................................... 338 Tableau 11 Tableau ASCII tendu ......................................................................................... 338 Tableau 12 Objets MS Access ............................................................................................... 339 Tableau 13 Objets MS Access en mode ouverture ................................................................ 339 Vincent Isoz MS Office Access 10/502 1 Liens internet Voici une liste non exhaustive de quelques excellents liens concernant MS Access! visiter absolument !!! http://ww.testoffice.com(testez vos connaissances) http://msdn.microsoft.com(page des dveloppeurs) http://msdn.microsoft.com/fr-fr/library/bb726434%28v=office.12%29.aspx (lien direct VBA) http://communities.microsoft.com(newsgroups) http://mypage.bluewin.ch/w.stucki/astuces.htm(page perso) http://ww.info-3000.com/access/supportdecours/index.htm(page perso) http://access.seneque.free.fr(page perso) http://ww.self-access.com/access(page perso) http://memoaccess.free.fr(page perso) http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/sommaire.htm(page universitaire) http://ww.wrox.com(livres MS Access en anglais) http://ww.developpez.com(forum) http://ww.microsoft.fr(pour les mises jour et plug-ins) http://w.mvps.org/accessfr/(page des MVP) http://homepage.bluewin.ch/wstucki/astuces.htm (plein d'astuces VBA!) http://www.mvps.org/access/general/gen0012.htm(Leszynski/Reddick naming convention) http://www.techonthenet.com/access/functions/index.php(liste de fonctions Access avec exemples) http://www.bandwood.com/gbs.htm(plug-in permettant de crer rapidement des Gantt sous Microsoft Access: Gantt Chart Builder System) http://www.iheartmacros.com (site officiel du VBA de Microsoft Office) Vincent Isoz MS Office Access 11/502 1. propos de l'auteur Nom Prnom: ISOZ Vincent Formation: Ing. Physicien HES (B.Sc.) Anne de naissance: 1978 Je suis consultant en mathmatiques appliques dans le tutorat d'analystes quantitatifs (niveau Bac+5 Bac+7) et auteur de plusieurs livres lectroniques dans les domaines suivants: - matrise statistique des processus/procds (mthodes paramtriques et non paramtriques) - modlisation prvisionnelle/dcisionnelle avance (arbres de dcisions, chanes de Markov) - recherche oprationnelle (simplexe, algorithmes gntiques, algorithme GRG) - data mining (rseaux de neurones, ACP, AFC, rgressions, scoring, clustering, etc.) - modlisation du risque en gestion de projets et finance d'entreprise (monte-carlo, etc.) - gestion de projets (modles et best practices thoriques EFQM+Six Sigma, MS Project) - ISO 9001:2008, 5807:1985, 10015:1999, 31000+31010:2009, 8258:1991, 10017:2003, etc. - Adobe Photoshop et Illustrator - 12 applications de la suite Microsoft Office System (Project, Visio, SharePoint, Access, etc.) ce jour interventions dans plus de ~200 entreprises dont 10 du Fortune 500 selon listing 2009 et 3 universits et coles d'ingnieurs suisses dans des cours de modlisation de bases de donnes et simulations stochastiques du risque. Formation de plusieurs dirigeants de multinationales en one to one. Accessoirement j'interviens pour des formations sur des logiciels comme MS Project, MS Visio, MS Access et une vingtaine d'autres dont je dlgue l'organisation des entreprises spcialises dans la formation continue en bureautique (niveau licence et en-dessous). Il est trs fortement conseill de planifier rigoureusement mon arrive et le cahier des charges si vous souhaitez faire appel mes services. Je suis effectivement trs exigeant sur le respect des standards de la gestion de projets et des normes minimales du travail entreprise (ISO 9001, ISO 690, ISO 9660, ISO 5807, ISO 10015, etc.) et je n'hsiterai pas vous dire franchement ce qui ne va pas dans votre organisation (je ne suis pas pay pour vendre un produit ou une mthode mais pour dire la vrit!). Je suis galement trs regardant sur les comptences des employs invits aux runions que je dois piloter et les conditions d'accueil. Vous voil prvenus si jamais! Vincent Isoz MS Office Access 12/502 2 Introduction "Je gre ma base de donnes sur Excel" "Je travaille sur une base de donnes Excel" Il est encore frquent d'entendre cette phrase, un non-sens puisque MS Office Excel n'est pas un systme de gestion de base de donnes mais un tableur!Cette confusion trouve son origine en partie dans le fait que les interfaces des deux logiciels sont similaires, lorsque les donnes sont prsentes en tableau. Mais la ressemblance s'arrte l! Le tableau se caractrise par sa souplesse et sa rapidit de mise en oeuvre, alors que le systme de gestion de bases de donnes permet avant tout d'assurer la cohrence d'une grande quantit d'informations, indpendamment de leur prsentation: tables, relations, intgrit rfrentielle sont autant de puissants outils spcifiques aux bases de donnes permettant d'assurer un contrle permanent de la cohrence des informations qu'elles renferment. Une base de donnes relationnelle (S.G.B.D.R.) a plusieurs avantages compars une base de donnes simple aussi appele "flat file". Elle utilise beaucoup moins d'espace mmoire, car elle rduit au minimum les redondances ou les rptitions des donnes (si elle a t bien conue). Remarques:R1. En prvision de l'volution technologique des bases de donnes, il est habituellement prfrable de mettre les tables dans un fichier MS Access prdfini "indpendant" d'un autre fichier o se trouveront les formulaires, requtes et tats (voir page 283). R2. Contrairement aux exercices donns dans ce support, les noms des champs de donnes doivent tre des mots uniques (sans espaces), en minuscules, sans accents et autres symboles spciaux (c'est ce qui est fait pendant le cours). R3. Pour plus d'informations sur les conventions de nommage voir la page 36. De plus, pendant le cours, nous n'allons pas ncessairement suivre l'ordre et la structure des exercices tels que prsents dans ce support (il faut savoir tre flexible!). Par ailleurs, en toute rigueur nous ne devrions pas parler de "base de donnes MS Access" mais de "base de donnes JET", JET (Joint Engine Technology) tant le moteur de base de donnes de MS Access 2003 et antrieur qui est lui-mme un outil RAD (Rapid Application Development). Remarque: MS Access 2007 et ultrieur utilisent un nouveau moteur appel "Access Database Engine" Enfin, la stabilit des fichiers MS Access (fichiers *.mdb) n'est pas garantie. Il arrive qu'un fichier soit endommag et, malgr les outils de rparation, ne puisse tre rcupr. Il est donc impratif de soigner tout particulirement sa politique de sauvegarde. Pour finir, je pense sincrement que les SGBDR clients sont des outils morts et dsuets face aux bases de donnes internet qui permettent une beaucoup plus grande flexibilit, une Vincent Isoz MS Office Access 13/502 interface plus conviviale, des possibilits grandioses, un environnement multi-utilisateur rel et j'en passe... Donc, rflchissez srieusement avant de faire une base de donnes avec des techniques qui ont 30 d'ge (est-ce que vous rouleriez avec une voiture dont la carrosserie est neuve, mais dont le moteur a 30 ans... probablement pas!). 2.1 Environnement Certes, MS Access est un L4G1 cr en 1992. Mais ce n'est pas le seul logiciel client de ce type sur le march et pas le plus vieux! Je souhaiterais donc indiquer les grands classiques dans l'ordre de popularit afin d'tre neutre: Microsoft Office Access Payant (www.microsoft.com) FileMaker Payant (www.filemaker.com) Open Office Base Gratuit (http://fr.openoffice.org) 1 un L4G (sigle de langage/logiciel de quatrime gnration) est un terme utilis pour dsigner un type de logiciel qui comporte un langage de programmation combin avec un systme de gestion de base de donnes. Vincent Isoz MS Office Access 14/502 4D Payant (www.4d.com) et nous pourrions encore citer SQL Server Express, ORACLE Express et MySQL. 2.2 Protocole Lorsque l'on cre une base MS Access, on procde toujours de la faon suivante (les temps ci-dessous sont donns relativement une qualit professionnelle assure - ces temps ne sont pas valables pour des amateurs o les facteurs peuvent aller de 0.1 100: 1.Analyse des besoins (2 jours 2 semaines) 2.Choix d'une stratgie de nommage2 (1 2 heures) 3.Modlisation selon les formes normales (2 jours 2 semaines) 4.Dfinir un *.mdw selon le protocole donn dans le chapitre de gestion de la scurit voir page 286) 5.Cration des tables (1 jour 2 semaines) a.Dfinition des proprits des tables3 (types de donnes, formats, contraintes, lgendes, index). b.Cration des liaisons (aprs la cration des listes de choix !!!) entre les tables (un un, un plusieurs, intgrit) 6.Cration des requtes (simple, ajout, suppression, table) (1 2 semaines) 7.Cration et design des formulaires (simples, imbriqus ne pas oublier les infobulles!) (1 2 semaine) 8.Cration et design des tats (1 semaine) 9.Sparation des tables dans un fichier indpendant: stratgie dorsale/frontale (1 jour) 10. Analyse/Optimisation de la base (1 jour) 11. Dfinir la gestion des utilisateurs (1 3 jours) 12. Compression de la base (1 5 minutes) 13. "Beta Testing" de la base (plusieurs jours) et ensuite validation (1 plusieurs semaines) 2 Ne pas prendre comme exemple ce support de cours qui ne respecte pas 100% la norme pour faciliter la comprhension du lecteur 3 Ne pas oublier de mettre une cl primaire sur des champs AutoNum sur chaque table mme si pas ncessaire dans un premier temps sinon problmes en perspective lors de migrations !!! Vincent Isoz MS Office Access 15/502 14. Crypter la base (*.mde/*.accde) et la dployer en runtime Remarques:R1. Dans une dmarche rigoureuse, aucune donne ne devrait tre saisie dans les tables tant que la base n'est pas totalement termine. R2. Commentez vos tables, vos champs etc et il vaut mieux en mettre trop que pas assez !!! R3. Il est possible que dans certains cas l'ensemble de la base doive tre faite en programmation V.B.A cause de contraintes ou complications trop leves. 2.3 MS Excel (tableur) VS MS Access (SGBDR) L'exprience nous montre que plus de 95% des utilisateurs de la suite MS Office utilisent MS Excel tort pour la gestion de listes et consolidation de donnes. Ce qui est incroyable c'est que ces utilisateurs se rendent pourtant bien compte que ce logiciel n'est pas fait pour la gestion de donnes tant donn les difficults qu'ils rencontrent et la perte de temps que cela engendre! Le problme vient au fait, d'un manque de recul et de formation de ses utilisateurs car rappelons-le, MS Excel est un TABLEUR (graphiques et calculs) et MS Access un systme gestion de BASE DE DONNES RELATIONNELLES (cela veut bien dire ce que cela veut dire !!). Certes, il est possible d'argumenter le fait que MS Access est un logiciel mtier pour spcialistes (informaticiens) et que contrairement MS Excel qui est tudi ds le gymnase (collge) dans les coles publiques, MS Access n'est lui souvent seulement enseign qu'en premier ou deuxime cycle universitaire dans les branches d'conomie. Cependant, toute entreprise doit se poser les questions suivantes: 1.Est-ce normal que les employs perdent des centaines d'heures par anne dans MS Excel faire ce qui peut tre fait dans MS Access en 10 minutes (il est aberrant de faire de la consolidation, des TCD ou travailler plusieurs dans un mme fichier dans MS Excel ! On voit trs bien que cela n'est pas fait pour !) 2.Sachant pertinemment que tout fichier MS Excel volumineux finit toujours un jour ou l'autre par se changer en une base MS Access, n'est-il pas plus avantageux de directement commencer par celle-ci et payer une formation d'une dizaine de jours ses employs plutt que de perdre du temps et de l'argent 3.Est-ce vraiment optimal que chaque employ fasse ses propres fichiers MS Excel, ou MS Access alors que dans une bonne entreprise, la majorit des donnes devraient tre centralises dans une unique base ? 4.Est-ce vraiment optimal que chaque employ enregistre ses documents sur son espace disque n'importe comment (alors qu'aujourd'hui des technologies comme MS SharePoint Portal Server permettent de faire de la gestion lectronique de documents G.E.D. sur une base de donnes MS SQL Server) Vincent Isoz MS Office Access 16/502 Ces observations proviennent de nos expriences dans plus de 400 PMI/PME et il nous parat clair qu'il y a des sommes d'argent astronomiques perdues chaque anne dans le suivi d'informations non organises et par les mauvais usages de logiciels. Il y aurait encore beaucoup dire comme: -MS Excel est lent pour l'analyse de millions de lignes de donnes -MS Excel ne permet pas de faire un contrle fin de la saisie sans programmation VBA -MS Excel ne permet pas de faire des relations de un plusieurs entre tables avec la fonction RECHERCHEV( ) ou sans passer par du VBA -MS Excel n'est pas adapt un environnement multi-utilisateurs -etc. Heureusement, les technologies venir s'orientent toujours plus vers des systmes GDD (gestion de donnes) ou GED (gestion lectronique de documents) supports par des bases de donnes relationnelles (comme SharePoint). Vincent Isoz MS Office Access 17/502 3 Notions de base de donnes Ce chapitre traite des notions de fondamentales relatives aux bases de donnes et est largement indpendant du programme de base de donnes MS Access. Nous allons expliquer quelques concepts fondamentaux de la terminologie des bases de donnes et prsenter certains outils et techniques de dveloppement de base de donnes. Lors du dveloppement de processus de travail informatiss, il est frquemment ncessaire d'enregistrer de gros volumes de donnes. Un programme de base de donnes gre ces donnes et permet de les lire, de les modifier, de les supprimer et d'en ajouter. La faon dont les donnes sont enregistres dpend du type de base de donnes et du systme de base de donnes. Dfinition:En informatique, une base de donnes relationnelle est un stock d'informations dcomposes et organises dans des matrices appeles "tables" lies de manire directement ou indirectement connexes conformment au modle de donnes relationnel (MDR). Le contenu de la base de donnes peut ainsi tre synthtis par des oprations d'algbre relationnelle telles que l'intersection, la jointure et le produit cartsien et est bas sur des algorithmes performants de gestion des donnes au niveau de la mmoire morte et de la mmoire vive de l'ordinateur. 3.1 Types de BDD Il existe diffrents types de bases de donnes, les bases de donnes relationnelles tant les plus connues: Type de BDDRemarques Base de donnes hirarchiques Il existe une hirarchie entre les enregistrements (organigrammes). Un enregistrement subordonn appartient un enregistrement suprieur (contrairement au modle relationnel, le type des enregistrements d'une relation ne sont pas forcment identiques!) Base de donnes rseau Ce modle est semblable au modle relationnel. Les relations entre les donnes sont toujours de type un plusieurs et gnrent un graphique galement appel "rseau" ou "flocon". Les relations sont appeles des "ensembles" (cubes OLAP). Base de donnes orientes objet Les bases de donnes orientes objets ne comprennent pas de donnes, mais des objets (donnes + oprations sur les objets selon les mthodes de Programmation Oriente Objet). Par exemple SharePoint est bas sur une telle structure. Base de donnes rparties Les bases de donnes rparties enregistrent des donnes dans plusieurs bases de donnes (ex. sur des ordinateurs dans diffrentes villes) et possdent des mcanismes de regroupement et d'interrogation des donnes rparties Base de donnes relationnelles Les systmes de bases de donnes relationnelles (SGBDR) constituent le type de base de donnes le plus important. Les donnes sont enregistres dans des tables lies par des relations. Le langage SQL a t dfini pour l'valuation des donnes Vincent Isoz MS Office Access 18/502 Tableau 1 Type de bases de donnes 3.2 Vues d'une base de donnes Les divers groupes de personnes qui travaillent avec une base de donnes ont, selon leur tche, des vues diffrentes de la base de donnes. Par exemple, le chef du personnel a besoin d'informations sur les employs, alors que l'administrateur de base de donnes s'occupe de l'enregistrement et de la scurit des donnes. Le chef du personnel ne s'intresse pas aux dtails du projet de base de donnes physique. Ils sont dfinis et, au besoin, mis jour par l'administrateur de base de donnes. L'architecture de base de donnes repose sur le projet logique, physique et visuel et l'ordre correspondant dans MS Access est souvent le suivant: Vue interne (ou physique): La vue interne (ou "schma interne") concerne l'organisation physique des donnes sur les disques. Les donnes peuvent tre rparties sur plusieurs ordinateurs dans diffrents btiments et villes. Les donnes que vous affichez ultrieurement, par exemple, sous forme de table ne doivent pas ncessairement tre enregistres ensemble. Souvent la vue interne est associe la terminologie de modle physique de donnes (MPD). Vue logique: Cette vue reprsente l'ensemble des donnes avec leurs relations sans souci d'implmentation physique ni d'utilisation. La conception de la base de donnes commence dans la vue logique: les donnes, leur gestion et leurs relations avec d'autres informations. Cette reprsentation peut tre sous la forme d'un modle conceptuel de donne (MCD), soit une synoptique empirique mais comprhensible. Une fois le MCD effectu, nous passons normalement un modle logique de donnes (MLD), soit un synoptique respectant des rgles bien prcises comme Merise ou UML. Quand nous travaillons par exemple sur une base de donnes du type relationnelle, nous parlons alors de modle logique de donnes relationnelles (MLDR). Vue externe (ou utilisateur): Elle reprsente la vue de l'utilisateur, qui ne travaille qu'avec une partie des donnes. Il ne connat ni la structure interne ni la vue globale de la base de donnes, mais uniquement les donnes qui lui sont visibles. Ces donnes peuvent tre lies et groupes d'une autre manire que dans la vue logique. Les utilisateurs d'une base de donnes ne doivent normalement pas connatre l'organisation physique des donnes. La structure physique des donnes peut donc tre modifie, sans rpercussion sur la conception de la base de donnes ou la vue de l'utilisateur. En particulier, les applications qui utilisent la base de donnes continuent fonctionner sans problme. Au niveau interne, vous pouvez utiliser diffrents formats de table (ex. MS Access, dBase, MS SQL Server ou Oracle). L'utilisateur ne doit pas connatre l'origine des donnes. La structure des donnes d'une vue logique est spcialement adapte aux besoins et aux autorisations de l'utilisateur. Par exemple, le chef du personnel peut afficher les salaires des employs, alors qu'un collaborateur du dpartement personnel ne peut accder qu' leurs coordonnes. Vincent Isoz MS Office Access 19/502 Projet de base de donnes logique Le projet logique dcrit la structure des donnes et les liaisons entre elles: rassemblement des donnes (ex. dans des tables) apparence des relations entre les donnes (ex. intgrit rfrentielle) ajout de la couche Business Logic: vrification de validit, formats de saisie, etc. Cette logique est alors la disposition de tous les utilisateurs des donnes. Elle garantit une gestion cohrente des donnes. Projet de base de donnes physique Le projet physique porte sur l'enregistrement des donnes: rpartition des donnes sur le disque possibilits d'accs aux donnes (rseau, internet, local) optimisation de l'enregistrement des donnes pour les oprations de recherche frquentes intgration de mcanismes de scurit automatiques (ex. enregistrement de donnes en plusieurs exemplaires, en miroir en cas de dfaillance d'un ordinateur, une autre machine peut prendre le relais avec les mmes donnes) 3.3 Modules d'un SGBDR Un SGBDR client ou serveur est bas sur plusieurs couches pour fonctionner. Sans aller pour l'instant dans les dtails en voici une numration dans l'ordre du plus bas niveau de la couche lectronique jusqu'au niveau utilisateur que le lecteur comprendra normalement une fois lu l'ensemble du prsent livre lectronique: - Gestionnaire de fichiers (SGF) Le gestionnaire de fichiers gre les affectations de mmoire sur disque et les structures de donnes qui reprsentent l'information sur disque. Il contient la description de l'organisation des fichiers (pages) de la base de donnes. -Gestionnaire de buffer Le gestionnaire de buffer supervise les changes entre les disques et la mmoire centrale grce une mmoire tampon. -Gestionnaire de la base de donnes Le gestionnaire de la base de donnes sert d'interface entre les donnes au niveau physique et les applications visuelles. -Processeur de consultation Le processeur de consultation transcrit les requtes de consultation dans la mmoire physique en instructions comprhensibles par le gestionnaire de la base. -OptimiseurL'optimisateur tente de formuler la requte de l'utilisateur de faon optimale en vue d'en acclrer l'excution partir de statistiques d'utilisation de la base de donnes. -Pr-compilateur DMLLe pr-compilateur DML convertit les instructions DML (Data Manipulation Langage Vincent Isoz MS Office Access 20/502 comme SQL) du programme d'application SQL en procdures et codes adquats pour tre comprises par l'optimiseur. -Compilateur DDL Le compilateur DDL convertit les instructions DDL (Data Definition Language comme SQL aussi) en un jeu de tableaux (pages) stocks dans un dictionnaire de donnes. -Gestionnaire d'accs et d'intgritLe gestionnaire d'accs et d'intgrit conserve l'intgrit des donnes et gre les habilitations des utilisateurs (autorisations d'accs). -Contrleur multitche Le contrleur multitche traite les conflits ventuels entre traitements simultans. -Module de rcupration Le module de rcupration assure la cohrence de la base mme la suite d'un "crash". -Fichiers de donnes Les fichiers de donnes contiennent la description de la base de donnes. -Fichiers systmes Le fichier systmes conservent les donnes relatives la structure de la base, les autorisations d'accs et le dictionnaire des donnes. -IndexLes index assurent la rapidit d'accs aux donnes de la base au niveau des requtes (SQL). -Statistiques d'utilisation de la base Les statistiques d'utilisation de la base sont exploites par le module optimiseur. 3.4 Mthodes de cration de BDD Pour la gestion de donnes, vous avez besoin d'un logiciel appel "systme de gestion de base de donnes" (SGBD). Il est principalement charg de traiter les requtes des utilisateurs et de renvoyer les donnes dsires. Un SGBD utilise les trois vues d'une base de donnes. Par exemple, si un utilisateur tente de demander des donnes sur un client, le SGBD peut excuter les oprations suivantes: La requte est convertie en procdure interne afin de prparer l'enregistrement dsir La vue utilisateur est convertie en vue logique et les structures de donnes ncessaires sont recherches. L'emplacement d'enregistrement physique des donnes est dfini. L'accs aux donnes s'effectue avec des oprations du systme d'exploitation Les donnes sont transmises l'utilisateur Vincent Isoz MS Office Access 21/502 Le SGBD est donc l'origine de plusieurs transformations des vues. En outre, il peut tenir compte des autorisations de l'utilisateur, noter les modifications des donnes, effectuer des vrifications lors de la saisie de donnes ou les prendre en considration lors de la suppression de donnes et fonctionner en mode multiutilisateurs. La cration d'un projet de base de donnes n'est gnralement pas une mince affaire comme nous l'avons vu dans notre protocole au dbut de ce support. Vous devez rassembler toutes les informations grer dans la base de donnes, raliser diffrentes vues utilisateur, rpartir ventuellement les donnes sur plusieurs ordinateurs, etc. Vous devez choisir un modle de donnes selon le systme de base de donnes utilis et le type de donnes, ainsi qu'une base de donnes prenant ce modle en charge. Si vous optez pour le modle de donnes relationnel, les donnes sont enregistres dans des tables. Vous pouvez dfinir des relations et des rgles d'intgrit entre les tables. Pour viter la rptition de donnes identiques dans diffrentes tables et une augmentation excessive du volume des informations enregistres (erreurs nombreuses dans un enregistrement), vous pouvez soumettre les donnes un processus de normalisation. Il est galement utile de possder une vue d'ensemble des donnes sous la forme d'un graphique. Pour ce faire, vous pouvez utiliser le modle E.R. (entit-relation). Modle de donnes relationnel: reprsentations des donnes dans des tables pouvant tre lies Rgles d'intgrit: Rgles directement dfinies dans les tables et vrifiant l'intgrit des donnes en cas de modification, de suppression et d'ajout. Processus de normalisation: mthode d'enregistrement sans redondance des donnes (pas d'enregistrement multiple) permettant d'viter les erreurs lors de la suppression, de la modification et de l'insertion de donnes. Modle entit-relation/association: reprsentation graphique de toutes les informations importantes pour les tables dfinies et des relations entre elles. Pour identifier de manire univoque tous les enregistrements d'une table, vous pouvez, par exemple, ajouter cette dernire un attribut supplmentaire qui numrote les enregistrements. Il est alors possible distinguer les entres de la table grce cet attribut. Dans ce cas, l'attribut est la "cl primaire" de la table. Chaque table ne peut possder qu'une cl primaire qui permet d'identifier de manire unique chaque enregistrement et qui n'est pas susceptible de changer au cours du temps. Dans l'exemple ci-dessous, l'ensemble d'entits Collaborateurs possde la cl primaire N Personnel: Remarque: comme nous le verrons dans les dtails plus loin, la cl primaire d'une table peut tre un attribut ou une association d'attribut dont la valeur permet d'identifier de manire unique les enregistrements de cette table. COLLABORATEURS N PersonnelNomAdresse Vincent Isoz MS Office Access 22/502 Une "cl externe" est un champ d'une table qui cre une liaison avec un champ de cl primaire d'une autre table. Par exemple, tous les enregistrements d'une table Commandes contiennent le numro du client qui a pass commande. Ce numro identifie de manire univoque un client dans la table des clients. Le numro de client dans la table des commandes constitue donc une cl externe ("cl trangre" d'une autre table). Il arrive frquemment aussi que les enregistrements d'une table doivent tre organiss dans un ordre diffrent (tris). Dans les grands volumes de donnes, cette procdure peut toutefois prendre du temps. Pour que l'accs aux donnes soit plus rapide, vous pouvez d'autres index que la cl primaire (nous verrons effectivement que la cl primaire cre automatiquement un index), appels "index secondaires". Remarque: Pour plus d'informations sur les relations voir la page 71 3.5 Modle entit-relation (MER) Le modle de donnes relationnel a t dvelopp en 1970 par le mathmaticien E.F. Codd et crit l'aide de la thorie des ensembles. Ce modle sert de base aux bases de donnes relationnelles. Pour tenir compte de toutes les informations pertinentes dans un systme de base de donnes, il est utile de dcrire le domaine d'application et les objets ncessaires. L'outil graphique le plus connu et le plus utilis cet gard est le "modle entit-relation" (MER) appel aussi "modle entit-association" (MEA) qui illustre tous les lments d'un systme de base de donnes relationnel et prsente les rapports entre eux. Dans la terminologie des bases de donnes, une "relation" est une "table" et donc une construction de colonnes et de lignes. Dans le domaine des bases de donnes, une relation ne dsigne donc pas, par dfinition, une liaison. Les donnes sont enregistres dans une table. Elle reprsente les informations grer (ci-dessous une table typique de MS Access): Une table est constitue de colonnes, galement appeles "champs" ou "attributs". Les lignes de la table contiennent des "enregistrements" ou "uplets". Tous les enregistrements d'une table ont une structure identique. Vincent Isoz MS Office Access 23/502 La structure d'une table est galement appele son "schma". Les divers systmes de base de donnes (ex. MS Access, dBase ou Paradox) disposent de diffrents formats de table, dont dpendent les conventions de noms des tables et des champs et les types de donnes de champs. Dfinitions: D1.Une "entit" (ou "enregistrement" donc) peut tre un objet, un concept ou une personne. Les entits se distinguent les unes des autres par leurs proprits. D2.Un ensemble d'entits est un rassemblement d'entits avec des proprits identiques et correspond une "table". Remarque: lLrs de la cration d'une base de donnes rflchissez d'abord aux entits et donc aux ensembles d'entits qu'elle doit contenir. D3. Une "relation" est une "liaison d'entits". Les relations se distinguent les unes des autres par leurs proprits. Le type de relation dcrit les rapports numriques entre les diffrents lments par exemple: combien d'enregistrements de la table "Collaborateur" ont t attribus un enregistrement de la table "Dpartement" ? Le type de relation est gnralement dfini par les mentions suivantes: 0 Pas d'attribution 1 Une seule attribution n,m Plusieurs attributions Les relations sont reprsentes par des lignes de connexion dans le modle ER: la relation est dcrite par un symbole et la "cardinalit" est ajoute en fin de ligne. D4.Les "proprits ou "attributs" caractrisent une entit, un ensemble d'entits, une relation ou un ensemble de relations. D5.Les proprits sont donnes par les "noms des champs de donnes" d'une table. D6.Un "domaine de dfinition" indique la plage de valeurs autorises pour une proprit. Exemple: une entreprise englobe des collaborateurs, des dpartements et des projets. Une base de donnes relationnelle doit tre cre pour grer toutes les informations et tous les vnements. Dans l'illustration suivante, tous les lments de la base de donnes et leurs relations sont rassembls: Vincent Isoz MS Office Access 24/502 Tous les rsultats et informations peuvent tre rpartis en trois ensembles d'entits: Dpartement, Collaborateur et Projets. Deux relations sont distingues entre les ensembles d'entits: un dpartement se compose de collaborateurs, qui travaillent sur des projets. tant donn qu'un dpartement comprend plusieurs collaborateurs, mais qu'un collaborateur n'appartient qu' un dpartement, il s'agit d'une relation un plusieurs. Dans ce cas, il est ncessaire d'insrer le champ de cl (primaire) de la table primaire (Dpartement)dans la cl (trangre) de la table trangre (Collaborateurs) N Dpartement. Plusieurs collaborateurs peuvent travailler sur plusieurs projets. Il s'agit d'une relation donc d'une relations plusieurs plusieurs. Les ensembles d'entits Dpartement, Collaborateurs et Projets possdent certaines proprits. Par exemple, l'ensemble d'entits Projets possde les proprits N Projet et Description. La proprit N Projet identifie exactement une entit ou un enregistrement et est donc choisie comme cl primaire. Une relation plusieurs plusieurs ncessite un autre ensemble d'entits, appel "table de transition" car l'association entre les collaborateurs et les projets n'est pas identifiable. Le nouvel ensemble d'entits comprend au moins les champs de cl des deux ensembles d'entits qui composent la relation plusieurs--plusieurs. Pour obtenir une description compacte des entits, attributs et champs de cl, vous pouvez utiliser la forme textuelle suivante. Elle commence par le nom de l'entit (table), suivi, entre parenthses, des attributs (champs), les champs de cl primaire tant souligns. DEPARTEMENT (N Dpartement, Description) COLLABORATEURS (N Personnel, Nom, Prnom, N Dpartement) PROJETS (N Projet, Description) EVALUATION_PROJET (N Projet, N Personnel, HeuresTravail) 3.6 Normalisation La rpartition des donnes dans des tables relationnelles peut entraner des erreurs lors de la modification, de l'insertion et de la suppression de donnes et ainsi gnrer des redondances et incohrences des donnes. Ces erreurs sont galement appeles "anomalies". Par exemple, chaque collaborateur est associ avec son dpartement et ses donnes de projet selon la table ci-dessous: Vincent Isoz MS Office Access 25/502 Toutes les donnes sont enregistres dans une seule table. Les problmes suivants surviennent lors de la modification, de l'insertion et de la suppression de donnes: 1.Lorsque vous insrez un nouveau collaborateur qui n'a travaill sur aucun projet, des champs de donnes sont laisss vides, ce qui gaspille de l'espace disque. Des problmes de traitement peuvent galement survenir en cas de requtes, ex. lorsqu'un collaborateur travaille sur plusieurs projets en mme temps. Ils figurent tous dans un champ N Projet et doivent faire l'objet d'une opration supplmentaire. Une requte ne peut porter que sur tout le contenu d'un champ ou une partie de celui-ci. 2.Lorsque vous supprimez un collaborateur, vous devez galement supprimer les donnes du projet correspondantes. Des donnes sont alors perdues. 3.Lorsque la dnomination d'un projet a t modifie, par exemple, Enqute des clients est remplac par Etude de march, tous les enregistrements contenant cette valeur doivent tre modifis (si plusieurs collaborateur y travaillent bien sr !) Le processus de normalisation permet notamment de rsoudre les problmes susmentionns. Pour ce faire, les donnes des tables doivent respecter certaines rgles. Le rsultat de l'application de ces rgles est appel "forme normale" des tables. Lors du processus de normalisation, les donnes sont rparties sur plusieurs tables. Les diffrentes tapes du processus de normalisation sont dsignes sous le nom de formes normales: premire, deuxime et troisime formes normales. La structure des donnes de l'exemple ci-dessus est appele "non normalise", car plusieurs informations sont enregistres dans certains champs d'un enregistrement. Par exemple, le collaborateur Demus travaille sur les projets 1, 2 et 3. 3.6.1 Premire forme normale Supprimez toutes les entres multiples dans un champ. Chaque champ de donnes d'un enregistrement doit contenir une valeur maximum. La premire forme normale spcifie donc uniquement que chaque entre d'un champ doit tre indivisible (une valeur atomique soit: non compose) et en plus impose qu'il y ait au moins une cl primaire. Cela ne veut pas dire qu'une remarque sur un projet ne peut contenir qu'un mot. Si le champ contient toutefois plusieurs remarques avec des indications de date, l'entre n'est plus automatique et peut tre rpartie en plusieurs champs de dates, avec textes de remarques correspondants. Vincent Isoz MS Office Access 26/502 Mais cette premire forme normale a encore les problmes suivants: 1.La table comprend des redondances. Des donnes de collaborateurs et des noms de dpartements et de projets apparaissent plusieurs fois. 2.La table contient les domaines indpendants suivants: collaborateurs, dpartements, projets. 3.Les donnes ne peuvent pas tre identifies de manire univoque. Par exemple, le nom du dpartement ne peut tre renvoy qu' l'aide d'un numro personnel. 3.6.2 Deuxime forme normale La deuxime forme normale exige que chaque champ non-cl (trangre) contenant des doublons dpende d'une cl (primaire) simple ou combine. Les donnes de la table initiale sont dsormais rparties dans quatre tables: COLLABORATEURS (N Personnel, N Dpartement, Nom, Prnom) DEPARTEMENT (N Dpartement, Nom) EVALUATION_PROJET (N Projet, N Personnel, Heures, Description) Remarque: La cl trangre N Personnel de la table EVALUATION_PROJET n'a aucune raison valable d'tre en tant que cl primaire dans l'exemple ci-dessus (au fait on s'en sert plus tard en cours de formation). 3.6.3 Troisime forme normale Une table rpond la troisime forme normale lorsque tous les champs de donnes ne dpendent que de cls primaires (ce qui a t fait dans la deuxime forme dans l'exemple prcdent) par l'intermdiaire de cls trangres. Vincent Isoz MS Office Access 27/502 En d'autres termes, il faut aussi que les champs interdpendants (dpendances transitives) soient reports dans des tables externes l'aide d'une cl primaire et trangre. Par exemple le champ Description une dpendance transitive avec les valuations du projet. Nous pouvons donc le sortir de la table d'valuation (meilleures performances d'affichages dans certaines situations comme les discussions pour les forums sur le web par exemple!): COLLABORATEURS (N Personnel, N Dpartement, Nom, Prnom) DEPARTEMENT (N Dpartement, Nom) PROJETS (N Projet, Description) EVALUATION_PROJET (N Projet, N Personnel, Heures, Description) Cette normalisation peut amener dsimbriquer des entits caches. 3.6.4 Exercice Les donnes d'un magasin doivent tre enregistres dans une base de donnes. L'illustration suivante montre les donnes essentielles dans une table non normalise. Esquissez un modle ER pour les donnes indiques: 1.Normalisez le projet de base de donnes (jusqu' la troisime forme normale). Vincent Isoz MS Office Access 28/502 2.Crez une base de donnes MS Access avec votre formateur soit directement dans le logiciel lui-mme avec les outils disposition soit en utilisant SQL ou MS Visio (votre formateur vous aidera) 3.Quelles mesures pouvez-vous prendre pour garantir l'intgrit des donnes ? 4.Crez les relations ncessaires. Quelles relations doivent tre cres avec l'intgrit rfrentielle et les mise jour et suppression en cascade? Remarque: N'hsitez pas faire usage dans MS Access de l'outil Analyse (dans le menu Outils) qui va vous proposer de normaliser vos tables (voir les dtails sur cet outil la page 279) 3.7 Modlisation de BDD avec MS VISIO Quand nous construisons directement les tables d'une base de donnes dans un logiciel de gestion des bases de donnes, nous sommes exposs deux difficults: 1.Nous ne savons pas toujours dans quelle table placer certaines colonnes (par exemple l'adresse de livraison se met dans la table des clients ou dans la table des commandes?). 2.Nous avons du mal prvoir les tables de jonction intermdiaires (par exemple une table des articles vendus qui est indispensable entre les tables des clients et la table des articles) Il est donc ncessaire de recourir une tape prliminaire de conception et il s'agit d'une partie importante du travail du dveloppeur est la modlisation de la base de donnes (sinon le cot de correction est trs important!). Pour exercer cela correctement (sans passer par une feuille A0 colle sur un mur et gribouille de part en part), il existe des logiciels spciaux tels que Merise ou MS Visio (pour ne citer que ceux que l'auteur connat relativement bien). Remarque: Il existe des cours de modlisation sur 2 jours, mais le sujet est au fait beaucoup plus tendu et fait l'objet d'un mtier lui seul. Le spcialiste dans le domaine est souvent informaticien thoricien ou mathmaticien avec un excellent bagage d'algbre relationnelle. Nous allons nous restreindre dans le cadre de ce cours l'utilisation de MS Visio 2000. La dmarche a chang dans la 2002 et la 2003 et le forward-engineering (le fait d'exporter le schma d'une base de donnes existante dans MS Visio) n'est disponible depuis la version 2007 que dans la version Vision Enterprise Architect (il y a quatre versions de Microsoft Office Visio ma connaissance). Par contre, le reverse-engineering (le fait d'importer le schma d'une base de donnes existante dans MS Visio) est toujours disponible dans le version pro et premium. L'utilisation en tant trs simple, le formateur va vous orienter sur la manire de procder pour crer par exemple les schmas de base de donnes auxquels doivent arriver les participants un cours MS Access aprs 3 4 jours de cours. Le schma de notre base de donnes pour l'ensemble de la formation ressemblera au tout dbut au modle logique de donnes (MLD) prsent ci-dessous. Vincent Isoz MS Office Access 29/502 Figure 1 Modle Logique de Donnes (MLD) dans MS Visio Sur la gauche de l'cran, se trouvent les deux formes "Entity" et "Relations" ncessaires la modlisation des donnes de la page suivante: Vincent Isoz MS Office Access 30/502 Lgende: PK = Primary Key, FK = Foreign Key, I = Index Lors de l'insertion d'une table, aprs un double clic sur cette dernire (nous avons pris pour exemple ci-dessous la table "tbl_sorties") apparat la fentre pop-up suivante: Et voici les proprits des autres registres (voir page suivante): Vincent Isoz MS Office Access 31/502 Concernant le typage des colonnes ci-dessus, celui-ci a nettement chang dans les ultrieures. Il a t standardis pour proposer une compatibilit vers diffrentes normes SQL, raison pour laquelle on trouvera par exemple les typages LONGTEXT et LONGCHAR (ce dernier tant privilgier pour MS Access) qui pour un forward engineering vers MS Access se retrouveront de toute faon convertis en type Mmo. Pour le registre "Trigger" le lecteur se rfrera une formation SQL Server, DBL2, Oracle. Pour le registre "Check" l'auteur de ce document donne sa langue au chat Les deux autres registres "Entended" et "Notes" ne sont pas absolument indispensables, nous en ferons donc pas mention. Vincent Isoz MS Office Access 32/502 Concernant les relations, il suffit de "glisser" une forme reprsentative de cette dernire entre les deux tables et de l'y accrocher (il faut que les tables deviennent alors rouge). Pour relier la cl primaire (PK) idArticles de la table tblArticles la cl trangrestrNbArticles (oui la dnomination des champs est mauvaisesur les captures d'cran) de tblEntrees (un article peut tre entr plusieurs fois) il suffit par un double clic sur la relation pour faire apparatre la bote suivante: Avec la touche Ctrl du clavier, slectionnez dans la liste de droite et de gauche, les champs lier et cliquez sur le bouton Ass