Cours Access
Cours Access
Cours Access
Données (SGBD) :
Microsoft Access
Pr. Babacar M. NDIAYE & Dr. Mouhamadou A.M.T. BALDÉ. Année 2022-2023.
Laboratoire de Mathématiques de la Désicion et d’Analyse Numérique (LMDAN)
[email protected], http ://lmdan.ucad.sn
Notes
Ces notes de cours correspondent à un enseignement de Masters 1 et 2 de la FASEG.
Ce cours est le résultat d’une réflexion technique pédagogique dont nous espèrons qu’il
apportera aux étudiants une stimulation intellectuelle et un encouragement à persévérer,
chaque fois que la compréhension d’un phénomène économique ou de gestion leur po-
sera des difficultés. Bien qu’ayant relu attentivement toutes les notes, il reste plusieurs
imperfections. Nous demandons aux étudiants de nous en excuser, et de nous les signa-
ler afin d’en améliorer la qualité. Leurs camarades de l’année prochaine leur en seront
reconnaissants.
1
Table des matières
1 LES SYSTÈMES DE GESTION DE BASES DE DONNÈES (SGBD) 3
1.1 L’organisation des données dans la base de données . . . . . . . 3
1.1.1 La base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 L’organisation des données . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Utilisation de plusieurs tables . . . . . . . . . . . . . . . . . . . . . 7
1.3 Clef primaire réalisée à partir de plusieurs champs . . . . . . . 10
1.4 Améliorations des schémas . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1 Améliorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.2 Les index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 APPLICATIONS 14
2.1 Création d’une base de données . . . . . . . . . . . . . . . . . . . . 14
2.2 Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Les types de données . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 Les propriétés des champs . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.3 Le format d’affichage . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.4 Le masque de saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.5 Les listes de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.6 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 La relation de type « un à plusieurs » (1 - n) . . . . . . . . . . . . 28
2.3.2 La relation de type « plusieurs à plusieurs » (n - m) . . . . . . . . 30
2.3.3 La relation de type « un - un » (1 - 1) . . . . . . . . . . . . . . . . 35
2.3.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4 Les requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5 Les formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6 Les êtats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.7 Les Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2
1 LES SYSTÈMES DE GESTION DE BASES DE DON-
NÈES (SGBD)
Nous abordons dans ce chapitre une introduction au base de données (son abréviation est
BD, en anglais DB, database) qui est une entité dans laquelle il est possible de stocker des
données de façon structurée et avec le moins de redondance possible. Ces données doivent
pouvoir être utilisées par des programmes, par des utilisateurs différents. Ainsi, la notion
de base de données est généralement couplée à celle de réseau, afin de pouvoir mettre
en commun ces informations, d’où le nom de base. On parle généralement de système
d’information pour désigner toute la structure regroupant les moyens mis en place pour
pouvoir partager des données.
Définition 1.1. Une base de données est un ensemble structuré de données enregistrées
sur des supports accessibles par l’ordinateur pour satisfaire simultanément plusieurs utili-
sateurs de façon sélective et en un temps opportun.
3
— Sécurité des données stockées : la base de données doit permettre un système de
sécurité permettant de gérer les droits d’accès aux informations par les utilisateurs.
Il doit permettre l’administration des données c’est à dire assurer la définition des
structures de stockage et des structures de données et le suivi de leurs évolutions.
Avant d’exploiter les données contenues dans la base, il faut trouver le meilleur moyen de
représenter le monde réel en structurant la base de données de manière à pouvoir l’exploi-
ter la plus simplement par la suite.
Dans Access, comme dans les autres SGBD, les informations doivent être segmentées en
données qui sont stockées dans des tables. Une table est donc un ensemble de données,
organisées en lignes et en colonnes (les tables sont développés au chapitre 2.2).
On peut stocker dans une table n’importe quel type d’information (texte, date, chiffres,
son, monétaire, etc.)
4
intérêts, etc.).
Comme on vient de le voir, chaque enregistrement contient un ensemble d’informations
(numéro, remb. en capital, intérêts) qui ont elles-mêmes diviser l’enregistrement en plu-
sieurs parties, chaque partie s’appelle un champ.
Le champ contient une partie des informations de chaque enregistrement (Figure 1).
5
Si nous reprenons notre exemple du crédit à remboursement, nous allons avoir une table
qui peut ressembler à la Figure 2 : L’organisation de la table doit être optimale. La table
Il faut toujours segmenter l’information en éléments les plus petits possibles. On au-
rait très bien pu créer une table remboursement avec un seul champ par enregistrement
qui contiendrait toutes les informations en même temps. Mais une des règles d’or dans la
création de la structure d’une base de données est de diviser le plus possible l’information
pour pouvoir la traiter par la suite le plus simplement et le plus efficacement
possible.
Le SGBD, pour retrouver les données qu’on lui demande, travaille avec le contenu des
champs, il lui sera donc difficile, dans la table «remboursement» telle qu’elle est, de re-
trouver les mentualités d’un client de l’agence du Point E se trouvant mélangée au numéro
d’identifiant, de même, on ne pourra pas récupérer le capital restant dû, celui-ci pouvant
se trouver dans le même champ que le numéro.
6
Figure 3 – Exemple d’une meilleure organisation de la table
Prenons l’exemple de la gestion d’un compte bancaire. On pourrait être tenté de créer une
seule table contenant les informations suivantes (Figure 4) : Et nous n’aurions pas spé-
cialement tort, toutes les informations relatives à un Num. compte (Numéro de compte)
s’y trouvent. Pourquoi faire plus compliqué ?
Néanmoins, nous allons voir qu’il est plus judicieux de créer ici deux tables (voir Figure
5) :
X Pourquoi ce choix ?
7
Figure 5 – Élargissement sous 2 tables
On va regrouper ensemble dans une même table toutes les informations relatives au même
«sujet». On voit bien ici qu’on peut regrouper ensemble les données concernant unique-
ment l’identité du client et, dans une autre table, les informations relatives uniquement
au compte (par exemple, la date d’ouverture d’un compte n’a pas de rapport direct avec
l’identité du clien et, on la trouvera dans une autre table).
Un bon moyen pour trouver les tables utilisées est de partir de la situation existante :
Un client peut avoir plusieurs numéros de comptes (compte courant, compte épargne,
etc.), a un compte peut correspondre plusieurs opérations de retrait.
Ce qui, au passage, nous permet d’enrichir les informations sur les clients, on peut en
profiter pour par exemple ajouter la date de naissance ou son adresse, ce qui aurait été
pénible dans la 1ère version.
En effet, il aurait fallu, pour chaque numéro de compte d’un client donné, ressaisir à
chaque coup sa date de naissance et son adresse (sans compter les erreurs de frappe d’un
numéro de compte à l’autre), là les informations ne sont saisies qu’une fois, ce qui est
8
Figure 6 – Table Compte
d’abord moins fatiguant (et ça, c’est le plus important) et ensuite, évite les fautes de
frappes et autres.
Maintenant que nous avons deux tables, mais du coup, on ne sait plus qui a fait quoi, les
informations sont éparpillées.
Il va donc falloir trouver un moyen pour savoir exactement à quel client correspond chaque
numéro de compte.
Pour cela on va ajouter dans la table client un champ qui va identifier de façon unique
chaque enregistrement, ce champ d’identification unique est appelé clef primaire.
A pouvoir retrouver de façon non équivoque n’importe quel enregistrement dans la table
«Compte», on ne peut en effet utiliser le nom ou le prénom comme clef primaire car deux
clients peuvent avoir le même nom (rare mais pas impossible).
La table «Compte» ressemble alors à ceci (le champ qui va porter la clef primaire (CIN)
est en gras) (voir Figure 7). Et pour pouvoir associer un numéro de compte à un client,
il va falloir ajouter un champ dans la table «Numero Compte», ce champ contient le CIN
du client ayant le numéro de compte (voir Figure 7).
9
Figure 7 – Table Numéro de Compte
Nous voyons ici que cette organisation répond à une des exigences des bases de don-
nées, à savoir la non redondance des informations.
Dans la première organisation, le nom et le prénom du client étaient répétés autant de
fois qu’il avait ouvert un nouveau compte, ici il ne sera présent qu’une seule fois.
Lorsqu’on voudra afficher les caractéristiques d’un numéro de compte (nombres débiteurs,
nombres créditeurs, etc.), Access, grâce au CIN du client présent dans l’enregistrement de
la table «Numero Compte» ira chercher automatiquement les informations le concernant
dans la table «Compte».
Cette organisation a un énorme avantage, le jour où on veut modifier le nom ou le prénom
d’un client, cette modification sera répercutée automatiquement sur les comptes qu’il aura
ouvert.
Lorsqu’on est sûr que le contenu d’une combinaison de champs ne se répétera pas dans
une table, on peut utiliser cette combinaison de champs comme clef primaire.
On aurait pu, à la place d’un CIN du client, utiliser la combinaison «nom + prénom +
date de naissance», parce qu’il est rare que deux auteurs différents aient le même nom et
le même prénom et la même date de naissance.
Mais ce type de combinaison complexe est difficile à maintenir (il est plus simple de taper
un numéro qu’une combinaison complexe de noms et de date, sans parler des erreurs de
frappes). En plus ceci prendrait plus de place dans la base de données (on ne voit pas
trop l’intérêt de découper les informations en deux tables si c’est pour retrouver dans le
10
Figure 8 – Recréation de deux tables
CIN du client utilisé dans la table «Numero Compte» quasiment toutes les informations
contenues dans la table «Compte»).
Remarque 1.1. Ce genre de clef primaire complexe fonctionne mal dans Access.
1.4.1 Améliorations
On peut encore améliorer le schéma de nos tables. En effet, pour la même raison qui nous
avait fait séparer en deux tables «Compte» et «Numero Compte» notre table de départ
pour éviter à avoir a ressaisir les informations concernant un même client pour chacun de
ses numéros de compte, il est ici possible d’effectuer à nouveau une division de la table
«Numero Compte».
11
Figure 9 – Modification de la table Numero Compte
X Maintenant, au lieu d’indiquer explicitement pour chaque numéro de compte son agence
et son type, on indiquera un numéro d’agence et un numéro de type.
L’intérêt est triple :
— gain de place en mémoire (stocker un numéro prend moins de place que stocker
une chaîne de caractères),
— gain de vitesse (entrer un numéro est plus rapide que taper le mot complet),
— optimisation de la structure (on pourra changer le nom d’un type de compte, ce
changement affectera instantanément l’ensemble des numéros de compte).
Pour optimiser les temps de recherche dans les tables, Access (et d’ailleurs tous les SGBD)
ont besoin d’index.
Définition 1.3. L’index permet à Access de retrouver plus rapidement les enregistrements
concernés ; il accélère aussi les opérations de tri.
X Comment on procède ?
Les index fonctionnent avec une table comme la table des matières avec un livre. Lorsqu’on
indexe un champ, Access stocke hors de la table les valeurs de ce champ. Lorsqu’on effectue
une recherche sur ce champ, plutôt que de le chercher dans la table, Access va faire sa
12
Figure 10 – Trouver un enregistrement via l’index
recherche dans l’index, une fois qu’il aura trouvé, il affichera le contenu de l’enregistrement
associé à cet index.
Exemple 1.1. Supposons que la table «Numero Compte» soit indexée sur le Num. compte
comme indiqué dans la figure 10.
Un index peut être composé d’un ou de plusieurs champs, on aurait pu indexer la table
Numero Compte sur un index «solde» par exemple (si ça peut servir à quelque chose), de
même, on peut utiliser plusieurs index pour une table, par exemple, on aurait pu indexer
la table Numero Compte sur les champs Agence, Type et Solde.
13
table, il faut le modifier également dans l’index, ce qui peut coûter très cher en temps.
On utilisera donc les index avec parcimonie et uniquement s’ils s’avèrent utiles.
2 APPLICATIONS
Nous décrivons dans ce chapitre comment créer une base de données, créer une table, faire
un requête, etc. Le premier exemple sera noté ici par «Banque») qui va contenir les tables
dont nous avons vu la structure dans la première partie.
Nous considérons la base de données «Banque») contenant les tables dont nous avons vu
la structure dans le chapitre précédent.
1. Dans «Catégories de modèles» cliquez sur «À la une».
2. Dans «Nouvelle base de données vide» cliquez sur «Base de données vide».
3. Entrez «Banque» comme nom de la base (à droite dans : nom de fichier).
4. Cliquez sur «Créer». Attention à l’emplacement du fichier ! Access l’enregistre par
défaut dans «Mes documents», cf Figure 11.
Remarque : On peut aussi créer une base de données via les modèles déjà conçus par
Microsoft.
Pour cela dans «Catégories de modèles» cliquez sur «Mes modèles». Puis dans «Mo-
dèles en ligne» choisissez le modèle qui vous convient. ♦
La fenêtre Base de Données s’affiche, elle contient tous les «objets» qui peuvent composer
une base Access :
Les Tables : Chaque table de la base va contenir les données se rapportant à un sujet
particulier, la table «Compte» va contenir les informations sur les comptes. C’est
l’objet fondamental de la base de données, toute requête, formulaire ou état va être
basé sur une ou plusieurs tables.
Les Requêtes : Les requêtes vont être utilisées pour obtenir des données contenues
dans une ou plusieurs tables à partir d’une question. Par exemple, une requête va
pouvoir nous afficher la liste des clients habitant à Dakar.
Les Formulaires : Le formulaire est utilisé pour faciliter la saisie et la modification
14
Figure 11 – Création de la base de données Banque
des données d’une table, par exemple, le formulaire «client» va permettre d’entrer
de façon conviviale les informations concernant un client de la banque. On peut les
saisir sans formulaire, ce que nous verrons, mais cette méthode est moins conviviale.
Les États : Les états permettent d’imprimer des données contenues dans des tables
selon une présentation définie en y intégrant éventuellement des calculs.
Les Macros : Les macros commandes permettent d’automatiser une suite d’opéra-
tions répétitives.
Les Modules : Les modules sont des programmes écrits en Visual Basic for Appli-
cation (VBA) pour réaliser des opérations qui seraient trop complexes en utilisant
les seules fonctionnalités d’Access.
Toutes les objets composants la base (cf Figure 12) seront développés dans les chapitres
qui suivent.
Dans cette partie, nous présentons la méthode de création de table. Access propose cinq
(5) méthodes pour créer une table :
15
Figure 12 – Les différents objets de la base
16
Figure 13 – Les différents types de données
Chaque champ peut contenir des données de différents types : le nom du client va contenir
des caractères alphabétiques, le code postal va contenir des chiffres, la date d’ouverture
de compte une date, un champ solde va contenir des valeurs monétaires.
Il faut choisir, pour chaque champ de la table, le type de données le plus approprié.
En effet, rien n’interdit de choisir comme type de données pour un champ contenant une
date ou un code postal un type «texte» ou pour champ contenant un solde un type
«numérique», mais autant utiliser les types les plus appropriés ! Les différents types sont
(cf Figure 13) :
Texte Pour un champ destiné à contenir des caractères alphanumériques (lettres
et/ou chiffres). Attention, le champ de type texte ne peut contenir plus de 255
caractères, on l’utilise pour un nom, une adresse, une agence, etc.
Mémo Même utilisation que le type texte, mais le champ de type mémo peut contenir
jusque 65535 caractères (64 Ko). Utilisé pour une description longue par exemple.
Numérique Le champ ne pourra contenir que des nombres avec ou sans décimales.
17
(un code postal, un CIN, un solde, etc.).
Date/Heure Le champ ne pourra contenir que des dates ou des heures (Access vérifie
la validité des dates ou des heures saisies).
Monétaire Valeurs présentées sous format monétaire (exemple : 4500.500 FCFA).
NuméroAuto Valeur numérique incrémentée automatiquement lors de la saisie de
chaque enregistrement. Si vous choisissez ce type de champ, vous ne pourrez rien
saisir dedans, c’est Access qui y placera un nombre automatiquement à chaque fois
que vous créerez un nouvel enregistrement. On l’utilisera lorsqu’on veut être sûr
que le contenu de ce champ ne se retrouvera pas dans un autre enregistrement de
la table.
Par exemple, pour le numéro de client : chaque nouveau client de la banque aura
un numéro unique automatiquement affecté par Access, c’est un champ de ce type
qui sera le plus souvent utilisé pour être une clef primaire.
Oui/Non Seules deux données sont autorisées dans ce champ : Oui et Non (on uti-
lisera ce type de données par exemple avec un champ «masculin»qui indiquera si
un client est de sexe masculin ou non).
Objet OLE OLE (Object Linked and Embbeded) est une technologie utilisée par
Windows, elle permet d’insérer dans une application des objets provenant d’autres
applications, on utilisera un champ de ce type pour insérer dans la table une image,
un son, un fichier Word, etc.
Lien Hypertexte Un champ de ce type contiendra une adresse Internet sur laquelle
on pourra cliquer directement.
NB : La liste de choix n’est pas vraiment un type de données, nous l’étudierons plus tard.
Comme vous pouvez le constater, chaque champ a des propriétés qui dépendent de son
type de données, ces propriétés vont déterminer la façon dont les données qu’il contient
vont être affichées ou comment les données vont être saisies dans ce champ.
Ces propriétés sont affichées dans l’onglet «Général» en bas de la fenêtre.
L’onglet «Général» affiche chaque propriété du champ et, à côté, dans des champs mo-
difiables, la valeur de cette propriété.
18
Figure 14 – Propriétés des champs
Ces propriétés varient selon le type de données (par exemple, un champ numérique aura
une propriété «décimales» qui indiquent le nombre de chiffres après la virgule que ne
peut avoir évidemment un champ de type texte).
La figure 14 indique les différentes propriétés des champs de type de donnée Texte et
Mémo.
X Cependant, tous les autres types de données ont des propriétés similaires, certains
ont des propriétés supplémentaires (cf Figures 15 et 16) .
Nous avons vu plus haut qu’on peut modifier la façon dont les données contenues dans
les champs peuvent être affichées ou forcer leur saisie selon un format précis.
19
Figure 15 – Champs de type Numérique
La façon dont les données sont affichées se fait par l’intermédiaire de la propriété «Format
d’affichage» .
X Attention !
La façon dont les données sont affichées dans un champ ne modifie en rien le contenu de
ce champ dans la table. Par exemple, si vous forcez à afficher un `1´ avant le contenu
d’un champ, si ce champ contient `234´, la valeur affichée sera `1234´ mais le contenu
du champ dans la table sera toujours `234´. La propriété ’format d’affichage n’influe que
sur la façon dont les données d’un champ vont être affichées.
Pour modifier le format d’affichage, on utilise les codes suivants (quand ils marchent, etc.),
Figure 15.
20
Figure 17 – Les codes du format d’affichage
21
Figure 20 – Pour les champs de type Date/Heure
On peut, bien sûr, utiliser des codes d’affichages supplémentaires, par exemple :
;«OK»[vert] ;«NON»[Rouge]
Remarque 2.1. N’oubliez pas que la ligne commence par le symbole « ;».
Remarque 2.2. On peut définir son propre format d’affichage pour les champs numé-
riques ou monétaires si le format que l’on désire ne fait pas partie des formats proposés
ci-dessus. Pour cela, on utilise un format d’affichage spécial, ce format est défini par une
chaîne de caractères qui a le format illustré dans la Figure 21 (vous tapez cette chaîne de
22
Figure 21 – Format d’affichage spécial
La première partie (avant le premier symbole « ;») va définir comment va être l’affichage
si le contenu du champ est supérieur à 0, la deuxième partie, si le contenu du champ est
inférieur à 0, la troisième partie si le contenu du champ = 0 et la dernière partie si le
contenu du champ est vide.
Chaque partie est une combinaison des symboles décrits dans la Figure 22.
Par exemple :
$#,##0.00[vert] ;($#,##0.00)[rouge] ;«Zéro» ;«Vide»
X Notez que les symboles # et 0 symbolisent chaque chiffre du nombre qui doit être affiché.
23
Figure 23 – Combinaison des autres symboles
Comme pour les champs de type numériques ou date, on peut définir son propre for-
mat d’affichage en utilisant une combinaison des symboles illustrés dans les différentes
Figures 23, 24 puis 25.
24
Figure 24 – Combinaison des autres symboles(suite)
25
Figure 26 – Format d’affichage des dates/heures dans Windows
Les informations stockées dans la table auront le format défini dans le masque de saisie
contrairement au format d’affichage qui affectait seulement la façon dont les données
contenues dans un champ allaient être affichées.
Le masque de saisie, comme le format d’affichage est constitué d’une combinaison de
caractères (cf Figure 27) :
26
Par exemple :
— si on veut saisir 5 chiffres obligatoirement pour un code postal, on utilisera : 00000,
— si on veut saisir une suite de 3 chiffres et de 3 lettres : 000LLL,
— si on veut saisir un numéro de téléphone : 00-000-00-00,
— ou un nom de famille dont la première lettre est toujours en majuscules : L≺ ? ? ? ?
(prévoir autant de ? que le nom peut comporter de lettres)
Nous avons vu précédemment que parmi les types de données est proposé un type de
données particulier : la liste de choix.
La liste de choix n’est pas à proprement parler un type de données particulier, c’est un
moyen de simplifier la saisie de données dans une table en proposant à l’utilisateur de
cliquer sur un élément proposé dans une liste.
Le champ de la table sera rempli avec l’élément sélectionné dans la liste.
2.2.6 Exemple
Nous considérons une base de données M1FASEG contenant une table Etudiants avec les
champs “NoCarte”, “Nom”, “Prenom”, “Groupe” et “Option”. Nous allons créer la base de
données ainsi que la table dans Access 2013.
Tout d’abord création de la base de données. On ouvre access et on click sur base de
données vide. Une boîte s’affiche pour vous permettre de mettre le nom de la base de
données. Mettre le nom “M1FASEG”. Vous pouvez changer le répertoire où sera stocker
la base de données. Une table par défaut est crée par access. Vous pouvez la renommer
en “Etudiants” puis modifier la structure des champs. Vous pouvez aussi la fermer sans
l’enregistrer ce qui revient à la supprimer pour ensuite créer une table par vous-même. Si
l’on choisit de fermer la table par défaut on doit en créer un autre soi-même. Pour ce faire
on va dans le menu “CREER” puis on clique sur “Table” ou “Création table” dans la barre
d’outils “Tables”. Un fois la table crée et nommée on l’ouvre en mode création. Dans le
mode création on met les noms des champs dans la colonne “Nom du champ”. On met les
types correspondant à chaque champ dans la colonne “Types de données”. On modifie les
propriétés du champ dans la partie “Propriétés du champ”.
27
Figure 28 – Création de base de données vide
2.3 Relations
Un enregistrement d’une table est en relation avec plusieurs enregistrements d’une autre
table (Figure 38).
28
Figure 30 – Changer le répertoire de la base de données
29
Figure 33 – Fermer la table par défaut
Exemple 2.2. On aurait pu avoir le cas où un numéro de compte est associé à plusieurs
clients, là, ça ne marche plus, car telle que la table «Numero Compte» est structurée, à
un numéro de compte ne peut correspondre qu’un client.
Si on veut permettre qu’à un numéro de client correspondent plusieurs clients (on a alors
30
Figure 35 – Mettre les noms des champs
31
Figure 37 – Modifier les propriétés du champ
1 - n (Figure 40). Ce genre de plaisanterie est à éviter à tout prix, en effet, s’il n’y a
qu’un seul client, les champs CIN 2 et CIN 3 ne vont rien contenir, et on va perdre
de la place dans la base de données.
Que va-t-il se passer s-il y a quatre clients ?
Vous répondrez qu’on peut prévoir quatre champs, ce à quoi je vous répondrai c’est
qu’il peut y avoir 5 clients, 10 clients, etc.
2. Il va donc falloir (on y coupe pas) créer une troisième table qui va servir d’inter-
médiaire entre la table «Compte» et la table «Numero Compte» (voir Figure 41)
.
32
Figure 39 – Relations entre les 2 tables
33
Quelles sont les modifications ?
Nous sommes bien d’accord qu’avec un seul CIN du client dans la table «Numero Compte»
nous ne pouvions pas avoir plusieurs clients pour le même numéro de compte. La solution
1 étant à proscrire (sauf dans le cas où on était sûr qu’il y aurait toujours 3 et seulement
3 clients), la troisième table est la seule solution.
X Comment ?
Et bien, à chaque numéro de compte correspond n enregistrements dans la nouvelle table
«Compte-Numero Compte», chaque enregistrement renvoyant sur un seul enregistrement
de la table «Compte».
Votre esprit curieux aura noté qu’on a, pour les besoins de la création de cette nouvelle
table, créé une clef primaire dans la table «Numero Compte».
X Pourquoi ?
Pour faire correspondre un enregistrement de la table «Compte-Numero Compte» avec
la table «Numero Compte», il faut le faire sur la clef primaire, et comme on n’avait pas
de clef primaire dans «Numero Compte», il a bien fallu en créer une.
Aucun des champs présents ne pouvait être utilisé comme clef primaire (la clef pri-
maire, je le répète, doit identifier de façon UNIQUE un enregistrement) : deux
numéros de compte peuvent avoir la même solde (rare mais pas impossible), peuvent être
créés le même mois, être du même type, etc., on aurait pu utiliser une clef primaire com-
plexe avec un couple (solde + mois), plutôt rare que ce couple se retrouve deux fois, mais
pour les raisons vues plus haut, on évitera d’utiliser ce type de clef.
Par exemple, on va avoir dans ces tables, les tables obtenues dans les figures 42, 43 et 44.
Avec cette méthode, on peut affecter sans aucun problème n clients à m numéros de
compte (ici le client Taleb Fall a reçu deux RIB (Relevé d’Identité Bancaire), Alexandre
Mendy un seul, et le RIB quatre est associé à deux clients que je ne citerai pas).
34
Figure 42 – Compte
2.3.4 Exemple
35
Pour faire la relation il nous faut choisir les deux champs des deux tables sur les quels on
va faire le lien. On va faire le lien de sorte qu’à chaque étudiant de la table “Etudiant”
on puisse voir les informations sur sa validation ou non. Il faudrait alors déjà que la
table “Etudiant” ait une clef primaire. Etant donné que nous allons faire le lien sur le
champ “NoCarte”, on va le définir comme clef primaire au pour la table “Etudiant”. Le
champ “NoCarte” peut faire office de clef primaire puisque c’est un identifiant unique
d’enregistrement. Pour la table “Validation” il n’est pas nécessaire de définir une clef
primaire.
Pour commencer ouvrez access, si les deux tables sont déjà créées on passe à la suite
sinon créez les comme indiqué dans le chapitre 2.2. Si les tables concernées par la relation
sont ouverts, fermez les. Allez dans le menu “OUTILS DE BASE DE DONNEES” dans la
barre d’outil “Relations” cliquez sur “Relations”. Une boîte de dialogue “Afficher la table”
s’affiche. Dans l’onglet des tables sélectionnez les deux tables “Etudiant” et “Validation”.
Puis cliquez sur “Ajouter” ensuite “Fermer”. Au niveau de la table “Etudiant” sélectionnez
et appuyez sur “NoCarte” faite glisser vers “NoCarte” de la table “Validation” et lâchez.
Une boîte de dialogue “Modifier les relations” s’affiche. Tout en bas, Type de relation
indique “Un-à-plusieurs”. Il peut parfois indiquer “Non défini” si la relation est mal faite.
Cochez toutes les options puis cliquer sur “Créer”. Pour constater le résultat obtenu, ouvrez
la table “Etudiant”. Grâce à l relation, on peut donc voir dans la table “Etudiant” les UVs
validés de chaque étudiant ainsi que le rang et la mention.
Les requêtes vont servir à afficher uniquement certaines données contenues dans les tables
selon certains critères. Elles peuvent aussi faire des calculs sur vos données, ainsi que créer
des sources de données pour les formulaires, les états ou même d’autres requêtes (on peut
faire une requête sur le résultat d’une autre requête). Elles servent encore à modifier des
tables existantes ou à en créer des nouvelles. Il existe différents types de requêtes que nous
allons détailler après :
- La requête sélection : C’est celle qu’on utilisera le plus souvent. Elle permet de
sélectionner des enregistrements, de faire des calculs et des regroupements. Elles
ressemblent beaucoup aux filtres, mais permettent, en plus, de travailler sur plu-
36
Figure 45 – Relation : afficher la table
37
Figure 47 – Relation : Ouverture de la table de relation
- La requête Ajout : Cette requête ajoute les données qu’elle a extraites à la fin
d’une table déjà existante.
- La requête Suppression : Cette requête supprime un ou plusieurs enregistrements
dans une ou plusieurs tables. Les trois derniers types de requêtes ne seront pas
étudiés :
- La requête SQL direct
- La requête de définition de données
- La requête UNION
Supposons qu’on veuille créer la requête suivante “afficher tous étudiants en Analyse”.
38
Pour ce faire il suffit d’aller dans le menu “CREER” puis dans la barre d’outils “Requê-
tes” choisir “Assistant Requête” ou “Creation de requête”. Nous allons utiliser l’assistant
requête puisque une fois la requête crée on peut l’ouvrir en mode création ce qui revien-
drait à l’option “Creation de requête” sans l’avantage d’avoir été assisté par access dans
la création.
Une fois l’assistant ouvert vous choisissez “Assistant Requête simple” puis cliquez sur
“OK”. Ensuite au niveau de “Tables/Requêtes” vous devez choisir l’objet sur lequel porte
la requête. Ici on choisit la table “Etudiant”. Choisissez les champs concernés par la re-
quête en sélectionnant le champ et en cliquant sur la flèche “>”. Ici on choisit les champs
“NoCarte”, “Nom”, “Prenom” et “Option”. Ensuite cliquez sur suivant. Donnez à la requête
un nom significatif par rapport à question qu’elle pose par exemple “EtudiantAnalyse”,
puis cliquez sur “Terminer”. Un premier résultat de la requête s’affiche lorsque au mo-
ment de cliquer sur “Terminer” l’option “Ouvrir la requête pour afficher les informations”
est active. Pour compléter la requête, c’est à dire afficher uniquement les étudiants en
analyse, on l’ouvre en mode création. En mode création en haut on voit “OUTILS DE
REQUÊTES” dans le menu“CREER” au niveau de la barre d’outil “Type de Requête”
on voit que “Sélection” est active, cela signifie que la requête que nous avons créer est de
type sélection. Il est possible de modifier le type de requête en cliquant sur un des types
de requête : Création de table, Ajout, Mise à jour, Analyse croisée, Suppression etc. Pour
achever notre requête on met “Analyse” à l’intersection de “Critères” et du champ “Op-
tion” puis on tape sur “Entrée”. On exécute à présent la requête en cliquant sur “Exécuter”
dans “OUTILS DE REQUÊTES” dans le menu “CREER” au niveau de la barre d’outil
“Résultats”.
39
Figure 49 – Ouvrir Assistant Requête
pourrons avoir un formulaire qui affichera dans la même fenêtre toutes les informations
concernant une commande : informations générales sur la commande (provenant de la
table “commande ”, informations sur le client ayant passé cette commande (provenant de
la table “clients ” et le détail de cette commande (provenant des tables “lignes-commande
” et “produits ”) alors que précédemment, ces données étaient éclatées sur plusieurs feuilles
de données. Les informations saisies ou modifiées dans le formulaire seront modifiées dans
les tables à partir desquelles le formulaire a été créé.
40
Figure 51 – Assistant Requête : choix objet
Les états vont permettre l’impression d’enregistrements selon une présentation qui aura
été définie préalablement. La création d’un état ressemble fortement à la création d’un
formulaire.
La macro commande permet d’automatiser certaines tâches d’Access, elle peut simuler
une suite d’actions qui auraient du être faites par l’utilisateur. Une macro est composée
41
Figure 53 – Assistant Requête : renommer la requête
42
Figure 56 – Requête en mode création
d’Actions, chaque action correspond à une tâche : lorsque vous exécutez la macro, Access
exécute automatiquement les actions qu’elle contient. Certaines de ces actions, plus com-
plexes, vous permettent d’afficher des boîtes de dialogue, de tester la réponse fournie par
l’utilisateur, d’afficher une barre de menus personnalisée ? et de développer une applica-
tion autonome sans avoir besoin de programmer des modules en Visual Basic (bien que
les actions fassent référence à des instructions en Visual Basic). La méthode de création
43
Figure 58 – Exécution de la requête
Références
[1] Microsoft Access Home Page, https://products.office.com/fr-fr/access.
[4] Saeed K. Rahimi and Frank S. Haug, Distributed Database Management Systems : A
Practical Approach, John Wiley and Sons, 2010.
44