TD N°2 - Une base de données avec plusieurs tables
SIG
Nous avons vu au cours de la première partie, que les bases de données sont capables de recenser des
informations dans des tables Nous allons maintenant voir qu'il est possible de les relier afin de pouvoir
partager les informations entre-elles.
Analyse d’un cas : La gestion des absences
Monsieur Bernard gère les absences dans un établissement scolaire. Dès qu’une absence est constatée, un
ticket d’absence est établi. Celui-ci précise l’élève concerné ainsi que le motif de l’absence.
BILLET D’ABSENCE N° Établi le
Nom : Prénom :
Depuis le : À h
Retour le : À h
Motif : Absence justifiée £ Oui £ Non
1. Analyse de la situation
Le Modèle Conceptuel des Donnée (schéma relationnel) suivant présente la base de données gérant les
absences.
Billets d’absence
Numéro_abs
Date_début_abs
Heure_début_abs
Date_fin_abs
Elèves
Absence_justif_abs
(0,n) (1,1) Motifs
Numéro_élève Concerner
#Numéro_élève
Nom_élève (1,1) (0,n)
Comporter Numéro_motif
#Numéro_motif
Prénom_élève Nom_motif
Analyse du schéma : repérer les différentes tables ? repérer les différents identifiants (les clés) ? pourquoi
retrouve-t-on dans la table billets d’absence, une référence au numéro d’élève et au numéro de motif ?
comment l’information est-elle partagée ?
TD N°2 : une base de données avec plusieurs tables - Page 2
1.1 Mettre en « relation » les tables
Les tables sont reliées entre-elles en utilisant une « association », symbolisée par un rond avec pour nom un
verbe à l'infinitif. Dans le schéma proposé, nous avons deux associations : concerner et comporter.
De chaque côté de l'association, les « cardinalités » viennent indiquer le nombre minimum et maximum de
fois où les enregistrements d’une table participent à l’association. Le premier chiffre correspond au minimum
(0 ou 1), et le second au maximum (1 ou n). Dans le cas présent :
w chaque billet d’absence concernera au minimum un et au maximum un élève et un élève peut avoir
au minimum aucun ou au maximum plusieurs billets d’absence.
au minimun 1
w à chaque billet d’absence correspondra ______________________________ motif bien précis et un motif
au minimun n
sera présent ______________________________ sur plusieurs billets d’absence.
Lorsque l’on se trouve en présence d’une cardinalité (1,1) ou (0,1), cela veut dire qu’il s’agit
d’une relation obligatoire ou facultative mais avec un maximum d’une occurrence.
___________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________
Dans le cas présent, chaque billet d’absence concernera un élève précis et comportera également un motif.
La « clé étrangère » est un attribut qui fait référence à une autre table. _________________________________________
Elle permet de relier les données entre différentes tables en assurant la cohérence.
___________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________
La clé étrangère est obligatoirement la clé primaire d'une autre table. Elle se situe toujours dans la table
positionnée du côté de la cardinalité (0,1) ou (1,1).
Elle est formalisée dans le schéma relationnel par un dièse « # », qui précède la clé.
1.2 Pourquoi décomposer la base de données en plusieurs tables ?
FIGURE : Vision en extension de la base de données « Gestion des absences »
TD N°2 : une base de données avec plusieurs tables - Page 3
En analysant la figure, il apparaît plusieurs raisons à l’éclatement de la base en plusieurs tables :
w Réduire la taille de la base de données, en évitant de ressaisir plusieurs fois les mêmes informations ;
w Faciliter la saisie d’informations récurrentes (en utilisant des listes déroulantes) ;
w Éviter les erreurs de saisie (orthographe ou erreur de frappe) ;
w Faciliter la mise à jour des informations.
2. Rédiger le modèle relationnel
L’objectif du modèle relationnel est de rendre compréhensible le Modèle Conceptuel des Données (MCD) par
le logiciel de base de données. Il s’agit d’une traduction.
Dans le cas présent, nous allons retrouver nos 3 tables qui s’appelleront des relations.
ELEVES (Numéro_élève, Nom_élève, Prénom_élève)
MOTIFS (Numéro_motif, Nom_motif)
BILLETS D’ABSENCE (Numéro_abs, Date_début_abs, Heure_début_abs, Date_fin_abs, Absence_justif_abs,
#Numéro_élève, #Numéro_motif)
Afin de relier les différentes relations, il faut utiliser des clés étrangères précédées par un # que l’on vient
positionner dans les relations qui reçoivent l’information.
Par exemple, pour créer le lien entre la relation BILLETS D’ABSENCE et la relation ELEVES, il faut intégrer la clé
étrangère #Numéro_élève dans la relation BILLETS d’ABSENCE.
À chaque billet d’absence, on affectera un numéro d’élève unique.
Dans le logiciel Access, nous utiliserons dans la table « BILLETS d’ABSENCE », l’assistant liste de choix, afin de
créer les liens avec les tables « ELEVES » et « MOTIFS ». Il sera ensuite possible d’affecter à chaque billet
d’absence, un élève et un motif précis qui sera unique pour chaque billet.
TD N°2 : une base de données avec plusieurs tables - Page 4
3. Mise en application sur le logiciel Access
1) Créer la table « Elèves », puis saisir quelques enregistrements
Nom du champ Type de données Propriétés du champ
Numéro_élève NuméroAuto Clé primaire - Légende : Numéro
Nom_élève Texte court Légende : Nom
Prénom_élève Texte court Légende : Prénom
2) Créer la table « Motifs », puis saisir quelques enregistrements
Nom du champ Type de données Propriétés du champ
Numéro_motif NuméroAuto Clé primaire - Légende : Numéro
Nom_motif Texte court Légende : Motif
3) Créer la table « Billets d’absence », puis saisir quelques enregistrements
Champ Format Informations complémentaires
Numéro_abs NuméroAuto Clé primaire - Légende : Numéro
Date_debut_abs Date/Heure « Date, abrégé » et masque de saisie - Légende : Date de début
Heure_début_abs Date/Heure « Heure, abrégé » et masque de saisie - Légende : Heure de début
Date_fin_abs Date/Heure « Date, abrégé » et masque de saisie - Légende : Date de fin
Heure_fin_abs Date/Heure « Heure, abrégé » et masque de saisie - Légende : Heure de fin
Absence_justif_abs Oui/Non Légende : Absence justifiée
R Je veux que le champ Liste de choix extraie les valeurs d’une autre
table ou requête.
Numéro_élève Sélectionner la table « Elèves »
Assistant
Ü Sélectionner les champs : « Numéro_élève », « Nom_élève » et
liste de choix
« Prénom_élève »
Elèves Numérique
Pas de tri nécessaire
£ décocher « Colonne clé cachée » - Saisir l’étiquette « Elèves »
R Activer l’intégrité des données
R Je veux que le champ Liste de choix extraie les valeurs d’une autre
table ou requête.
Numéro_motif
Assistant Sélectionner la table « Motifs »
Ü liste de choix Sélectionner les champs : « Numéro_motif », « Nom_motif »
Motif Numérique Pas de tri nécessaire
R cocher « Colonne clé cachée » - Saisir l’étiquette « Motifs »
R Activer l’intégrité des données
4) Afficher les relations en vous rendant dans l’onglet « OUTILS DE BASE DE DONNÉES », rubrique « Relations…»
et en choisissant « Relations ».
5) À l’aide de l’assistant formulaire, créer un formulaire avec les informations sur les élèves et les absences (voir
point 4.3.2. ci-après).
TD N°2 : une base de données avec plusieurs tables - Page 5
4. Tutoriel détaillé sur Access
4.1 Utiliser l’assistant liste de choix pour relier les tables
En utilisant l’assistant « Liste de choix… », Access va créer automatiquement la relation entre les tables et
également appliquer l’« intégrité référentielle ».
L’ « intégrité référentielle » est un mécanisme permettant d’éviter les anomalies dans une base de
données. Elle permet de vérifier l’existence de la valeur (la référence) de la clé étrangère par rapport à la
valeur de la clé primaire correspondante.
Il n'est pas possible de faire référence à une valeur dans une clé étrangère, qui n'a pas été déjà enregistrée en
clé primaire. Dans le cas présent, il ne sera pas possible de réaliser un billet d’absence s’en avoir au préalable
saisie la fiche élève dans la table.
L'intégrité référentielle vérifie également que la clé primaire et la clé étrangère ont le même format de données
(texte, numérique, date...).
4.2 Afficher les relations existantes entre les tables
8 Onglet « OUTILS DE BASE DE DONNÉES » à rubrique « Relations…» à Choisir « Relations »
FIGURE : Onglet « OUTILS DE RELATION » - « CRÉER »
Pour que les données s’échangent entre les tables, il faut que vos tables soient reliées entre-elles et que
l’intégrité référentielle soit appliquée.
Il faut donc systématiquement vérifier que vos relations sont établies avant de commencer à réaliser des
saisies.
TD N°2 : une base de données avec plusieurs tables - Page 6
w Pour ajouter une table dans les relations :
8 Choisir « Afficher une table » à double-cliquer sur la table à rajouter.
w Pour relier deux tables :
8 Utiliser l’ »assistant liste de choix » ou réaliser un glisser-déposer d’une clé étrangère vers une clé primaire.
w Pour appliquer l’intégrité référentielle sur une relation :
8 Double-cliquer sur la relation à Cocher « Appliquer l’intégrité référentielle ».
w Pour supprimer une relation :
8 Cliquer sur la relation à appuyer sur la touche « Sup ».
4.3 Créer des formulaires avancés
Avant de créer des formulaires, fermer tous les onglets (tables, formulaires, relations…).
Créer un « formulaire double affichage »
Ce formulaire offre deux affichages simultanés :
m un affichage formulaire « simple » présentant un enregistrement précis dans la partie haute
m un affichage formulaire « feuille de données » dans la partie basse.
Les deux formulaires sont synchronisés.
8 Cliquer sur une table dans le volet de navigation à Onglet « CRÉER » à Rubrique « Formulaires » à Choisir
« Plus de formulaires » puis « Formulaire double affichage ».
Créer un « formulaire intégrant un sous-formulaire »
Nous allons créer un formulaire qui comprendra des informations sur chaque élève et également des
informations sur les absences de celui-ci.
8 Onglet « CRÉER » à Rubrique « Formulaires » à choisir « Assistant formulaire » à Ajouter les champs des
tables « Elèves » et « Billets absence » à Afficher vos données en fonction de « Elèves », en utilisant un
« formulaire avec sous-formulaire »
Intégrer une liste déroulante de sélection dans la zone d’en-tête
8 Basculer en mode création à Rubrique « OUTILS DE CRÉATION DE FORMAULAIRE – CRÉATION », rubrique
« Contrôles » à choisir « Zone de liste déroulante » et insérer là dans la zone d’en-tête à cocher « Rechercher
un enregistrement dans mon formulaire… » à Sélectionner « Numéro_élève ».