TD Bases de données - ACCESS Sujet : initiation à ACCESS (TD 1) ACCESS est un Système de Gestion de Bases de Données relationnel (SGBDR) qui permet la structuration, le stockage, la maintenance, la mise à jour et la consultation de données réparties dans plusieurs tables. Ces données peuvent être mises en relation les unes avec les autres. Rappels • Tables : elles stockent les données. Une table se présente comme un tableau. Les différentes colonnes sont les champs et les lignes listent les enregistrements. • Clef primaire : c’est l’ensemble des champs d’une table qui permet d’identifier de façon certaine et unique chaque enregistrement. Une clef primaire peut être composée d’un ou plusieurs champs. Des valeurs identiques (doublons) ou manquantes (NULLes) ne sont pas autorisées dans cette colonne. 1 Ma première base de données 1.1 Création d’une base de données 1. A partir de l’explorateur Windows, créer dans le répertoire Mes Documents un sous-répertoire à votre nom (ex. Mes Documents\Velcin). 2. Lancer ACCESS (menu Démarrer/Programmes/Bureautique/MS Office) et sélectionner l’option “Nouveau fichier/Base de données vide”. Enregistrer votre base de données sous le nom clinique.mdb dans votre répertoire. La base de données est maintenant créée mais elle est vide. Il s’agit d’un fichier portant l’extension .mdb et contenant sept types d’objets : tables, requêtes, formulaires, états, pages (web), macros et modules. Ces différents objets sont accessibles en cliquant sur les onglets appropriés de la fenêtre de gestion de la base (voir ci-dessous). 1.2 Création de la structure d’une table On souhaite créer une table contenant des informations sur les patients d’une clinique. Cette table doit comprendre les champs indiqués dans le dictionnaire de la figure 1. Licence IDEA 1ère année – Université Lumière (Lyon 2) © 2013 Responsable du cours : Julien Velcin Description de la donnée Numéro de patient Civilité Nom Prénom Code Postal Date de naissance Nombre d’enfants Remarque Nom du champ NumPatient Civilité Nom Prénom CP DateNaiss NbEnfants Remarque Type de données Numérique Texte Texte Texte Texte Date/Heure Numérique Mémo Taille Entier long 15 30 30 5 – Octet – Figure 1 – Dictionnaire des données 1. Cliquer sur l’onglet “Tables”, puis sur “Créer une table en mode Création” (ou utiliser le bouton et sélectionner le mode création). Le mode création est utilisé pour paramétrer la structure d’une table : nom de chaque champ et type, principalement. Il sert également à définir la clef primaire. 2. A l’aide du dictionnaire des données, renseigner les colonnes “Nom du champ” et “Type de données”, ainsi que la propriété “Taille du champ” (fenêtre du bas). – Pour se déplacer d’une zone de saisie à une autre, utiliser la touche “Tabulation” ou la touche “Entrée”. – Pour se déplacer d’une ligne à une autre, utiliser les flèches de déplacement. – Pour saisir le type du champ, utiliser le bouton de choix. – Pour saisir la taille du champ, cliquer sur la zone “Taille du champ” qui se situe dans l’onglet général des “Propriétés du champ”. Attention : veillez à respecter le format exact pour le nom des champs (minuscules, majuscules. . . ). Sinon, l’important réalisée par la suite ne fonctionnera pas. 3. Les patients sont identifiés par leur numéro de patient NumPatient, qui leur est attribué dès qu’ils font appel aux services de la clinique (dans la réalité, on utiliserait sans doute leur numéro de sécurité sociale). Définir en conséquence la clef primaire de la table en sélectionnant la ligne du champ adéquat, puis en cliquant sur l’icône création se présente comme suit : 4. Enregistrer la table en cliquant sur l’icône “Patients”. dans la barre d’outils. La table en mode ou par le menu Fichier/Enregistrer, sous le nom 5. Fermer la table en cliquant sur le bouton de fermeture ou par le menu Fichier/Fermer. Si la sauvegarde n’a pas été effectuée auparavant, le système vous préviendra. 1.3 Modification de la structure d’une table 1. Dans l’onglet “Tables” de la fenêtre de gestion de la base, sélectionner la table “Patients” et cliquer sur le bouton “Modifier” ( ). De nouveau en mode création, il est possible de modifier la structure de la table. 2. Supprimer le champ “Remarque” en sélectionnant la ligne adéquate et en utilisant la touche “Suppr”. 3. Paramétrer le champ “Civilité” afin qu’il affiche la liste suivante : Madame, Mademoiselle, Monsieur. Lors de la saisie, il suffira donc de sélectionner le bon cas parmi ces trois propositions, sans Figure 2 – Assistant : Liste de choix. Figure 3 – Saisie des données. 4. 5. 6. 7. 1.4 rien avoir à taper. Pour cela, cliquer sur le champ “ Civilité ”, puis sélectionner comme type de donnée “Assistant Liste de choix”. Dans un deuxième temps, il faut sélectionner l’option “Je taperai les valeurs souhaitées”. Saisir enfin les valeurs souhaitées (voir figure 2). Utilisation d’une contrainte de domaine : Les patients ne peuvent être soignés dans cette clinique que s’ils sont domiciliés dans le Rhône. En utilisant la propriété “Valide si” du champ “CP”, entrer une expression qui vérifie que cette condition est remplie (le code postal doit commencer par 69, les trois caractères suivants étant indifférents : Comme “69*”) et envoie un message d’erreur lors de la saisie d’un patient domicilié hors du Rhône (propriété “Message si erreur”). Paramétrer le format du champ “ DateNaiss ” afin qu’il affiche la date avec deux chiffres pour le jour, deux chiffres pour le mois et quatre chiffres pour l’année (propriété “Format”). Paramétrer une des propriétés du champ “CP” afin d’afficher comme libellé d’en-tête de colonne de la feuille de données : “Code Postal” (propriété “Légende”). Fermer la table en cliquant sur le bouton de fermeture ou par le menu Fichier/Fermer. Définition d’un index Un index est une structure de données interne au SGBD qui permet d’accélérer les accès aux données à partir d’un champ. Par exemple, indexer le champ “Nom” de la table “Patients” permet de répondre aux requêtes du type “afficher le dossier du patient Untel” ou “afficher les dossiers de tous les patients dont le nom commence par la lettre A” de façon plus efficace. 1. Modifier la table “Patients” et ajouter un index sur le champ “Nom”. Donner à la propriété “Indexé” la valeur “Oui Avec doublons” afin de permettre la saisie de patients homonymes. 2. Consulter la valeur de la propriété “Indexé” pour la clef primaire “NumPatient”. Conclusion ? 1.5 Saisie et modification de données 1. Dans l’onglet “Tables” de la fenêtre de gestion de la base, sélectionner la table “Patients” et cliquer sur le bouton “Ouvrir” ( ). En mode “Feuille de données”, il est possible de saisir les données présentées dans la figure 3. 2. Supprimer l’enregistrement correspondant à Mme BOUILLUT en sélectionnant la ligne adéquate, puis en faisant apparaı̂tre le menu contextuel par un clic droit, ou bien par le menu Édition/Supprimer l’enregistrement. 3. Basculer en mode création en utilisant le menu Affichage/Création, ou en cliquant sur l’icône , en haut à gauche de votre fenêtre. La structure de la table est accessible et modifiable. Re-basculer en mode Feuille de données en utilisant le menu Affichage/Mode Feuille de données ou en cliquant sur l’icône , en haut à gauche de votre fenêtre. Il est possible d’accéder aux données contenues dans la table et de les modifier, de les supprimer ou d’en ajouter de nouvelles. 4. Essayer d’ajouter une patiente “Mademoiselle Anatole Anna, résidant dans le 9ème arrondissement, née le 01/01/2001, sans enfant”, en réutilisant le numéro de patient 1. Que se passe-t-il ? Pourquoi ? 1.6 Importation de données Dans de nombreux cas, beaucoup d’informations que l’on veut introduire dans une base de données existent déjà sur support informatique. Une ressaisie de ces mêmes données peut être fastidieuse et superflue, surtout si ces données sont vraiment volumineuses ce qui va nous faire perdre du temps et d informations en cas de faute de saisie. ACCESS nous offre la possibilité d’importer des données stockées dans des supports externes (fichiers Excel .xls, texte .txt, etc.). 1.6.1 Importation des données des fichiers EXCEL Pour procéder à cette importation, il convient de procéder comme suit : 1. Au début, il faut fermer la table cible par l’importation (Patients dans notre cas) 2. On lancera l’importation via le menu Fichier - Données externes - Importer. . . Une fenêtre d’importation apparaı̂tra, il suffit alors d’indiquer le type de fichier (Excel .xls) et sélectionner le fichier cible Patients.xls. Le fichier se trouve à l’adresse : http://eric.univ-lyon2.fr/ ~jvelcin dans la partie “Enseignements”. 3. On suivra les instructions de l’assistant d’importation, en validant l’option ”Première ligne contient les en-têtes de colonnes”, puis en indiquant que les enregistrements sont à rajouter à notre table Patients. 4. A la fin de l’importation, nous pouvons vérifier la mise à jour. 1.6.2 Importation d’une table à partir d’un fichier texte (.TXT) Nous pouvons créer des tables entières et les remplir en important la structure et les données d’un support fichier externe, sans que nous procédions à la création de ces mêmes tables avec la façon vue auparavant dans ce TP. Dans ce qui suit, nous voudrions créer une table pour les médecins. Au lieu de définir la table au début (les champs, leurs types, etc.), nous importons directement la base à partir d’un fichier Texte (.txt) nommé Medecins.txt. La table Médecins dispose de la structure suivante : Médecins (Num Med, Nom, Adresse, Spécialité) Pour finaliser cette importation, nous procédons comme suit : 1. Nous importons nos données comme via le Menu : Ficher - Données externes - Importer. . . , tout en choisissant le type du fichier texte. Le fichier à importer est bien Medecins.txt. Il se trouve à l’adresse internet http://eric.univ-lyon2.fr/~jvelcin dans la partie “Enseignements”. 2. Nous assurons l’importation en cochant les options comme indiqué dans les figures suivantes : Dans la figure suivante, on choisit l’option Dans une nouvelle table comme notre but est de créer une nouvelle table et pas de mettre à jour une table existante. Après, et pour le champ Num Med, nous l’indexons comme un attribut sans doublons puisque nous voudrions le garder comme clef primaire après. Une clef primaire ne peut pas avoir de doublons puisqu’elle identifie tout l’enregistrement (une ligne dans la table correspondante). Nous confirmons après ces indexations par le choix de l’attribut Num Med comme clé primaire. Après, il reste qu’à valider le bouton Suivant et le bouton Terminer du formulaire suivant. Nous pouvons vérifier la bonne création de la table Medecins en y accédant depuis la base de données clinique. 1.7 Fermeture de la base de données et sortie d’ACCESS 1. Fermer tous les objets de la base de données éventuellement ouverts (tables, requêtes, etc.). 2. Fermer la base de données en cliquant sur le bouton dans la fenêtre de gestion de la base ou par le menu Fichier/Fermer. 3. Quitter ACCESS par le menu Fichier/Quitter ou en cliquant sur le bouton. Votre base de données est automatiquement sauvegardée. 2 Exercice sur les retraites 2.1 Création et saisie 1. Dans une nouvelle base de données nommée “Retraites”, créer la table “CLUB” possédant les caractéristiques suivantes : Nom du champ Numéro Nom Type NuméroAuto Texte Date Date/Heure Montant Monétaire Règlement Texte Propriétés du champ clef-primaire Taille : 20 caractères Format : demander l’affichage en majuscules Légende : Date règlement Valeur par défaut : date d’aujourd’hui Règle de validation : valeur inférieure ou égale à la date d’aujourd’hui Message si erreur : “Entrez une date inférieure ou égale à celle d’aujourd’hui” Valeur par défaut : 200 (on prend l’euro comme monnaie par défaut) Règle de validation : montant inférieur ou égal à 500 Message si erreur : “Saisissez une valeur inférieure ou égale à 500” Interdire que le champ soit laissé vide (valeur NULL) Légende : Réglé par Liste de choix : chèque ou espèces – Pour demander l’affichage en majuscules, la propriété “Format” du champ considéré est > (ou < si on demande un format en minuscules). – La fonction à utiliser pour mentionner la date courante est : =Date(). 2. Saisir les données suivantes dans la table : Nom Antoine Trassard Brice Rolland Matier Draze Date Saisir la date d’hier Saisir la date d’aujourd’hui Saisir la date de demain Ne rien saisir Saisir la date d’avant-hier Saisir la date d’aujourd’hui Montant Ne rien saisir 300 600 500 200 500 Règlement Chèque Espèces Espèces Chèque Espèces Chèque Commentaires ? 2.2 Importation On souhaite importer dans la base de données “Retraites” une table contenant des codes et des noms d’adhérents. Cette table est contenue dans une autre base de données, externe, nommée “ Import ”. 1. A l’aide d’un navigateur Web tel qu’Internet Explorer, télécharger la base de données import.mdb dans votre répertoire. Le fichier se trouve à l’adresse : http://eric.univ-lyon2.fr/~jvelcin dans la partie “Enseignements”. Lorsque la boite de dialogue suivante apparaı̂t, utiliser l’option “Enregistrer” pour télécharger une copie du fichier import.mdb dans votre répertoire. Ne surtout pas ouvrir et/ou modifier ce fichier en ligne, utiliser votre copie ! 2. Ouvrir la base de données “Retraites”, puis activer le menu “Fichier / Données externes / Importer”. Sélectionner la base de données “Import”, puis la table “Adhérents”, valider. Commentaires ?