Lier les tables à l’aide des relations
Jusqu’à maintenant on avait considéré les tables séparément les unes des autres. Mais en réalité, les tables sont liées entre elles (et c’est souvent le cas dans la pratique).
Objectif
Les relations évitent les données redondantes et gèrent ce qu’on appelle l’intégrité référentielle.
La BDD Facturation gère :
– La liste des clients de l’entreprise ; – Un catalogue de produits ; – Les commandes effectuées – Les détails de chaque commande (N° de commande, liste des produits commandés).
– La table Clients n’a pas besoin des autres tables (tous les champs appartiennent à cette table seulement) ; – La table Catalogue aussi ; – Pour une commande, on a besoin de connaître le n° client. Une commande est identifiée par un n° automatique ; – Puisqu’une commande contient une liste de produits avec la quantité commandée, ces détails sont alors stockés dans la table Détail des commandes. o On a alors besoin de connaître le n° de commande et la référence de l’article ou du produit, c’est là qu’on saisit aussi la quantité commandée ; o Les deux champs de la clé primaire sont des clés étrangères ;
Eviter la redondance
On aurait pu se passer de la table Détail des commandes, mais on serait obligés dans ce cas de répéter dans la table commande (pour une même commande) : le numéro de commande, le numéro client. Dans ce cas, il faut créer une autre clé primaire ou bien accepter les redondances.
Intégrité référentielle
Ceci nous empêche par exemple de saisir dans la table Commandes un n° de client qui n’existe pas ou bien dans les détails de commande un n° de commande ou une référence article qui n’existent pas.
Remarque importante : bien que les champs Numéro client des tables Clients et Commandes aient le même nom, Access ne sait pas qu’ils désignent la même information. C’est la relation qui l’indique.
Créer les relations entre les tables
L’onglet Outils de base de données gère les relations
– Fermer toutes les tables ouvertes ; – Cliquer sur le bouton Relation dans le menu précédent ; – Les tables apparaissent alors dans une fenêtre mais ne sont pas liées; – Remarque la liste des champs et quelles sont les clés ; – Cliquer avec le bouton gauche sur le champ Numéro Client de la table Clients. – Sans relâcher, glisser sur le champ Numéro client de la table Commandes ; – Une fenêtre s’affiche, cocher les 3 options (les expliquer) ;
– – Cliquer sur le bouton Créer ; – On vient de créer une relation parent-enfant (chaque client peut avoir plusieurs commandes).
Refaire les mêmes étapes pour créer les deux autres relations :
Astuce : le 1 de la relation est toujours du côté contenant la clé d’origine.
La BDD est maintenant prête à être exploitée (Requêtes sur plusieurs tables par exemple).
Modifier/supprimer une relation
– Cliquer avec le bouton droit sur le trait de la relation ; – Choisir l’option Modifier ou supprimer.
Exercice (Base de données BDD_Poly_Access) :
1. Dans la table Clients, il existe 2 clients pour lesquels la plupart des champs ne sont pas renseignés. Lesquels ? 2. Ecrire alors leurs numéros sur une feuille et allez dans la table Commandes pour voir s’il existe des commandes correspondant à ces clients ; 3. Si oui, existe-t-il des détails de commandes pour ces commandes dans la table « Détails des commandes » ? 4. Supprimer les deux clients dans la table Clients ; 5. Vérifier que les commandes correspondantes dans la table Commandes ont bien été supprimées. 6. Corriger les numéros de téléphone pour qu’ils soient tous écrits de la même façon « 01 23 45 67 89 », c-à-d sur dix chiffres avec des espaces entre chaque couple de chiffres. 7. Supprimer les deux décimales du champ « Nobre employés » et appeler ce champ « Nombre employés »
Réponses :
1. Ce sont les clients 14 et 15 ; 2. Il existe 2 commandes correspondantes (39 et 49), il suffit pour cela par exemple de cliquer sur le bouton qui se trouve à gauche de l’enregistrement correspondant dans la table Clients en mode Feuille de données. Les enregistrements liés sont alors affichés ;
3. Il n’existe aucun enregistrement correspondant aux commandes 39 et 49 dans la table « Détails des commandes » ; 4. Sélectionner un client dans la table Client, puis Accueil -> Enregistrements -> Supprimer. 5. Afficher la table Commandes en mode Feuille de données ; 6. Corriger ces valeurs dans la table Clients en mode Feuille de données. 7. Ouvrir la table Client en mode Création -> Sélectionner le champ « Nobre employes » et mettre 0 dans l’option « décimales ». Modifier ensuite le nom du champ.
On a vu les outils permettant de retrouver des informations dans une feuille de données (tri, filtrage, etc.)
– On peut par exemple afficher rapidement les clients habitant Paris ou la liste des commandes passées le mois précédent. – Mais qu’en est-il de requêtes plus complexes, par exemple la liste des clients ayant commandé des systèmes de capteurs l’année dernière : ces informations se trouvent en effet dans des tables différentes. – Ce deuxième exemple montre l’intérêt et l’importance des requêtes portant sur plusieurs tables et on verra aussi l’importance des relations. – Une requête peut-être sauvegardée et exécutée autant de fois que l’on veut.
Types de requêtes
– Requêtes de sélection (pas de modification des données) – Requêtes Action (ou de modification de données)
Le groupe Autre de l’onglet Créer permet de créer des requêtes.
Fonctionnalités des requêtes
– Combiner plusieurs tables (exemple ci-dessus) ; – Effectuer des calculs (par exemple CA d’un certain produit) ; – Réaliser des synthèses à travers des regroupements d’informations (exemple : rassembler les commandes par client afin de savoir quel est votre client principal) ; – Mise à jour de données (suppression, modification, etc.) = Requêtes Action
Modes de création des requêtes :
– Assistant requête (moyen rapide mais limité) ; – Mode Création (le plus utilisé, il se base sur une interface graphique) ; – Mode SQL (il faut taper les formules en utilisant le langage SQL, pour les experts).
Les requêtes de sélection
Requête 1 : en mode Création « Commandes Clients »
Afficher les clients (Raison sociale) ainsi que leurs commandes respectives (Date de commande). On voudrait trier les clients par ordre alphabétique et pour le même client trier les commandes par ordre chronologique.
– Fermer toutes les fenêtres ; – Dans le groupe Autre, cliquer sur le bouton Création de requête ; – Dans la fenêtre qui s’affiche cliquer sur la table Clients puis sur Ajouter ; – Cliquer sur la table Commandes puis sur Ajouter ; – Remarquer que la relation entre les deux tables est affichée ; – Double-cliquer sur le champ Raison sociale ; – Double-cliquer sur le champ Date de commande ; – Pour le tri spécifier « Croissant » pour les deux champs (le tri est effectué selon la 1ère colonne puis la 2ème ainsi de suite). Pour modifier l’ordre de tri, modifier l’ordre des colonnes;
– Cliquer sur le bouton dans le menu Créer -> Résultats ; – Le résultat s’affiche alors dans une feuille de données ; – Pour passer en mode Création, cliquer sur Affichage -> Mode Création. – SI on ne veut pas afficher une colonne dans le résultat, il suffit de décocher sa case « Afficher » – Enregistrer la requête -> Commandes clients.
Explication : c’est le champ « Numéro client » qui fait que Access retrouve les commandes d’un certain client (Il fait un produit cartésien=jointure des deux tables et ne garde que les enregistrements qui ont le même Numéro client.
Quelques outils pour la création de requêtes
Le groupe Créer -> Paramétrage de requête permet de paramétrer la requête.
Supprimer une table dans une requête
– Bouton droit sur la barre de titre de la table ; – Supprimer une table.
Ajouter une table à la requête
– Appuyer sur le bouton Afficher la table ; – Choisir la table à ajouter dans la liste qui est affichée.
Ajouter/supprimer une colonne
Une colonne correspond à un champ de la requête :
si on veut par exemple ajouter un champ entre Numéro client et Date de commande :
– Cliquer dans une case de la colonne « Date de commande » ; – Cliquer sur le bouton Insérer des colonnes ; – Une nouvelle colonne vide est alors insérée ; – Choisir le champ à y insérer.
Pour supprimer un champ (une colonne)
– Se positionner dans la colonne ; – Cliquer sur Supprimer colonnes dans le menu.
Renommer une colonne :
Si on veut par exemple afficher « Nom client » dans le résultat, il faut modifier le nom du champ dans la requête comme ceci : « Nom client : Raison sociale ».
Modifier l’ordre des colonnes :
– Cliquer sur la bande au dessus de la colonne pour la sélectionner ; – Cliquer/glisser vers la droite ou la gauche puis relâcher.
cherche le fichier BDD_Poly_Access