Access: Les relations
Avant de commencerCette page inclut des exercices pour expérimenter avec les relations entre les tables. Pour vous aider à la compréhension, vous pouvez copier le fichier demoacc2.mdbpour ceux qui ont Access 97 ou demoa2k2.mdb pour ceux qui ont Access 2000 de la page des fichiers de démonstrations . Cliquez ici pour vous rendre à cette page. Copier la base de données appropriée sur une disquette ou sur votre disque dur et revenez ensuite à cette page. L'aspect pratique de relier des tables sur des champs en commun est pour éviter la redondance. Il est inutile de réécrire plusieurs fois les mêmes informations. Par exemple, avec une base de données relationnelle telle qu'Access, il est inutile d'écrire plusieurs fois la même information sur un client à chaque Factures. La force des tables reliées est de vous donner accès à de l'information d'une autre table que vous n'auriez pas accès sans une relation entre les tables. Prenons l'exemple des tables Factures et Clients. La table Factures contient le champ Code client et aucune autre information sur le client. Mais ce champ est la clé pour relier les deux tables. Il est possible de le relier au champ No client de la table Clients. Une fois relié, il est ensuite possible d'avoir les autres informations sur le client tel que le nom de la compagnie, son adresse, ses personnes contacts, sa marge de crédit etc. Les types de relations ou la cardinalitéIl existe trois types de relations: un à un, un à plusieurs et plusieurs à plusieurs. Ce n'est pas toujours facile de déterminer quel genre de relation, aussi appelé cardinalité, qu'il y a entre deux tables. Il faut de la pratique. J'ai trouvé un petit truc pour déterminer quel genre de relation qu'il y a entre deux tables. Je l'ai trouvé par hasard en donnant mes démonstrations. Je ne sais pas jusqu'à quel point qu'il est efficace. Mais, il fonctionne très bien durant les démonstrations. Il s'agit de poser deux questions. 1- Pour 1(enregistrement de la première table), combien peut-il en avoir dans la seconde table? Les deux questions commencent toujours par: "Pour 1 de ceci, combien de cela ?" Les deux seules réponses acceptables sont soit un ou plusieurs. Une fois que vous avez les réponses, placez-les dans le petit tableau qui suit. Il faut inverser la question numéro deux pour l'entrer dans le tableau. Remplacez-les "?" par les résultats (un ou plusieurs). Déterminez le type de relation
Ensuite, vous écrivez sur la dernière ligne le plus gros, entre un et plusieurs, de la deuxième et la dernière colonne. Vous pouvez ensuite savoir de quel genre de relation qu'il s'agit. Le prochain exercice consiste à expérimenter avec ce petit truc. Il faut déterminer quel genre de relation qu'il peut y avoir entre les tables Factures et Clients. Il faut poser les questions. Q1: Pour 1 Factures, combien ai-je de clients' La réponse est un. Une Factures, un client. Déterminez le type de relation
Ensuite, vous écrivez sur la dernière ligne le plus gros, entre un et plusieurs, de la deuxième et la dernière colonne. Vous pouvez ensuite savoir de quel genre de relation qu'il s'agit. Effectivement, il s'agit bien d'une relation d'un à plusieurs entre les tables Clients et Factures. Vous pouvez maintenant essayer avec d'autres tables ou d'autres situations. Ceci veut aussi dire que vous pouvez trouver seulement une fois l'information en commun dans l'une des tables et plusieurs fois dans l'autre. Pour cet exemple, chaque valeur du champ No client de la table Clients est unique. Il n'y a pas deux enregistrements (ou clients) avec le même numéro de client. Cependant, dans la table Factures, vous pouvez retrouver le même numéro de client pour plusieurs enregistrements différents. C'est pour cette raison que la relation est appelée de 1 à plusieurs. L'information en commun se retrouve seulement une fois dans la première table (Clients) et potentiellement plusieurs fois dans la seconde (Factures). Relation un à unEx.: Un homme est marié à une seule femme. Une femme est mariée à un seul homme.
Relation un à plusieursEx.: Une personne peut posséder plusieurs motos. Une moto ne peut être possédée que par une seule personne. (On oublie les cas de copropriété).
Relation plusieurs à plusieursEx:. Un étudiant suit plusieurs cours. Un cours est suivi par plusieurs étudiants. Il faut faire attention lors de la conception d'une base de données avec des relations de type "plusieurs à plusieurs". Il y a plus de détails plus loin dans ce document sur ce cas spécial. Ce qui est nécessaire pour créer une relation : 2 tables (ou requêtes ou une combinaison des deux) N'essayez pas de créer une relation entre les champs Date et Numéro de téléphone. Les champs ne sont pas du même type (Texte, Numérique, Date/Heure, Oui/Non, NuméroAuto...) Aussi, n'essayez pas de créer un lien entre les champs nom et prénom. Bien que les deux champs soient du type "Texte", ils n'ont pas le même contenu. Création d'une relation dans une requêteIl est très avantageux par moments d'être capable d'afficher les informations contenues de plusieurs tables en même temps. Il faut cependant avoir une relation entre les tables pour avoir un résultat intéressant. Le prochain exercice consiste à créer une relation entre deux tables dans une requête. De la liste des tables disponibles, ajoutez les tables Factures et Clients.
Placez le pointeur par-dessus l'un des champs en commun.
Appuyez sur la touche Supprime. Une fois que les tables sont correctement reliées, il est temps d'afficher le résultat. Exécuter encore une fois la requête en appuyant sur le bouton . Le nombre d'enregistrements devrait avoir réduit à 3 Factures. Il faut aussi remarquer que vous voyez les informations de deux tables en même temps ! C'est là l'un des grands avantages des bases de données relationnelles; être capable d'accéder à de l'information qu'aucune table, prise seule, est capable de fournir. C'est seulement une fois que ces tables sont reliées qu'elles sont vraiment efficaces. Le mécanisme d'une relationÀ partir d'une requête, il est possible de modifier ou d'ajouter des enregistrements. Au moment où vous écrivez une valeur dans l'un des champs en commun. Access va essayer de trouver si cette valeur existe dans l'un des enregistrements de l'autre table reliée. S'il trouve, vous aurez accès au contenu de tous les champs de l'enregistrement. Prenons l'exemple des tables Factures et Clients qui sont reliées sur les champs en commun Code client et No client dans une requête. Si vous écrivez un chiffre entre 1 et 3, Access pourra trouver un enregistrement dans la table Clients et vous afficher toutes les informations de l'enregistrement si vous le voulez. Il est possible d'entrer ou de modifier de l'information à partir d'une requête qui contient plusieurs tables. Il faut s'assurer que l'un des champs en commun de toutes les tables reliées soit utilisé dans la requête. Sinon, Access va vous avertir qu'il ne peut pas réaliser la requête. Attention ! De plus, ce champ en commun doit être celui dans lequel vous pouvez entrer plusieurs fois la même information. Par exemple, si vous faites une relation entre les tables Factures et Clients sur le champ en commun numéro de client, utilisez le champ Code client de la table Factures puisque vous pouvez entrer plusieurs fois le même numéro de client dans les factures. Une fois que vous avez entré les informations dans la table Clients, vous ne pouvez pas le rentrer une seconde fois ! Création de relations permanentes entre les tablesIl est avantageux de relier des tables dans la requête pour accéder à de l'information qu'aucune des tables prises seules ne possède. Le problème avec cette technique est qu'il faut refaire les relations à chaque fois que vous faites une nouvelle requête. Access vous offre une manière de créer des relations plus " permanentes " entre les tables de votre base de données. Elle a aussi l'avantage de vérifier "l'intégrité" des relations entre les tables. À partir du Ruban, il est possible d'accéder à la partie des relations. De l'onglet Outils de base de données, sélectionnez l'option Relations. C'est dans cette fenêtre que vous allez créer les relations entre les tables. Lorsque vous ouvrez cette section pour la première fois, il n'y a pas de tables; seulement un grand espace vide. Il faut premièrement ajouter les tables ou les requêtes sur lesquelles vous voulez relier. Pour accélérer la démonstration, j'ai déjà mis pour vous toutes les tables qui seront nécessaires pour les relations sauf la table Clients. Ajouter une tableLorsque vous allez ouvrir la zone des relations pour la première fois, elle devrait être vide. Il faut que vous ajoutiez les tables ou les requêtes que vous voulez relier avant d'établir les relations. De l'onglet Outils de relation, appuyez sur le bouton .
Établir les relations entre les tables.Placez le pointeur par-dessus le champ Numéro de client de la table Clients. Une fois que vous aurez fait la relation, l'écran suivant va apparaître. Access peut refuser de créer une relation avec intégrité référentielle pour ces raisons : La table qui contient l'enregistrement unique n'a pas l'option d'index sans doublons ou clé primaire. L'option Mise à jour en cascade.Met à jour dans la ou les autres tables qui sont reliées. Si vous changez le numéro de client, tous les enregistrements des autres tables reliées dont le code client est identique vont aussi être modifiés. Ex.: Si vous changez la valeur du champ No Client de la table Clients, Access va aussi la changer pour tous les champs en commun des tables reliées. Dans ce cas, se serait seulement le champ Code Client de la table Factures. L'option Effacer en cascade.Cette option efface les enregistrements de l'autre table qui ont le même champ en commun que l'enregistrement supprimé. Quand doit-on activer cette option ? Cela dépend du contenu des tables. Dans ce cas, pour des raisons fiscales, il serait préférable de conserver les données même si un client ne veut plus de vos services. Mais pour une base de données sur des réservations par exemple, il serait préférable d'enlever une réservation en même temps que les informations sur le client. Voici un graphique avec une représentation des tables et des relations entre elles. Un peu plus tard, on vous demandera de créer toutes les relations entre ces tables. Pour le moment, lisez les autres options possibles sur les relations. Supprimer une relation.Il est possible de retirer une relation entre des tables. Il existe quelques raisons pour retirer une relation entre des tables ou des requêtes. La première est que vous avez commis une erreur au moment de la création de la relation. Vous avez accidentellement choisi le mauvais champ au moment de la création de la relation. Ou, après une analyse plus approfondie, vous changez les relations entre les tables. Aussi, pour vous permettre de modifier la structure d'une table reliée, il peut être nécessaire auparavant de retirer une relation. Access va vous le dira si c'est le cas. Cliquez sur la ligne qui relie les deux tables. Appuyez sur la touche Supprime. Modifier les options d'une relation.Faites un double-clic sur la ligne qui relie les deux tables. Les options de la relation vont ensuite apparaître. Vous pourrez les modifier et ensuite appuyer sur le bouton créer pour conserver ces modifications. Il est maintenant temps de créer les relations entre les tables. Voici un cas particulier qui pourrait bien vous arriver au moment de la création de relations entre les tables de votre base de données. Création d'une relation entre les tables Factures et Employés. Il faut premièrement déterminer quel type de relation qu'il s'agit ou sa cardinalité. 1 facture est générée par un seul vendeur. Il s'agit donc d'une relation de type 1 à plusieurs. Il faut maintenant créer la relation entre les tables Employés et Factures sur leur champ en commun. Placez le pointeur par-dessus le champ Numéro de poste de la table Employés. Sortir de l'écran des relationsSi vous voulez conserver les relations entre les tables, vous devez premièrement les sauvegarder avant de quitter le mode de relations. Cliquez sur le bouton avec la disquette . Les relations de plusieurs à plusieursAccess vous offre une manière facile de créer des relations de type 1 à 1 et de 1 à plusieurs avec l'option d'intégrité référentiel. Cependant, la création de relations de type plusieurs à plusieurs nécessitent plus de travail. Prenons l'exemple de la création d'une relation entre les tables Factures et Produits. Avant tout, il faut déterminer de quel genre de relation qu'il s'agit. 1 Factures peut contenir plusieurs produits. Il s'agit bien d'une relation de plusieurs à plusieurs. Il est impossible de faire directement une relation de type plusieurs à plusieurs. Les caractéristiques des clés primaires ne permettent pas le dédoublement de ceux-ci. Il faut créer une table intermédiaire, ou une table composée, qui contient la clé primaire des deux tables que vous voulez relier. Il faut ensuite créer deux relations de type 1 à plusieurs entre les tables Factures, Produit et la table intermédiaire en utilisant le champ de la clé primaire des deux tables. N'oubliez pas d'activer l'option d'intégrité référentielle et aussi l'option de mise à jour en cascade. Sinon, la relation de plusieurs à plusieurs est plus difficile. Pour qu'une relation fonctionne, il faut qu'il y ait le même genre d'information dans les deux tables reliées. L'option "Mettre à jour en cascade" s'assure que l'information se retrouve aussi dans l'autre table. Il vous est donc inutile de vous préoccuper d'avoir l'information dans les deux tables. Access s'en occupe pour vous. Création d'une factureC'est ici que toutes les relations entre les tables seront mises en avantage. Le prochain exercice consiste à la création d'une requête qui contient toutes les tables reliées. Cliquez
sur l'onglet des requêtes . À chaque fois que vous ajouter une table à la requête, la table s'ajoute ainsi que ses relations avec les autres tables. De plus, il s'agit de relations avec les options d'intégrité référentielle. La première relation était une relation "simple"; sans la possibilité d'une relation avec intégrité référentielle. De la liste des champs possibles, sélectionnez en ordre les champs suivants: Numéro de facture (Transition Fact-Inv), Code client (Facture), No vendeur (Facture), Numéro de produit (Transition Fact-Inv), Quantité (Transition Fact-Inv), Prix Unitaire (Inventaire). C'est le minimum de champs nécessaire pour avoir une requête avec des relations qui fonctionnent. Il faut que l'un des champs dans une relation soit affiché. De plus, ce champ doit être celui dont vous pouvez entrer plusieurs fois la même information (plusieurs). Vous pouvez ajouter les autres champs à votre choix. Puisqu'ils sont reliés, toutes les informations vont automatiquement s'afficher sans rien avoir à ajouter de l'information. Pour vous démontrer l'avantage de relier les tables, le dernier champ à ajouter est un champ calculé. Il va prendre l'information de deux différentes tables (Quantité et Prix unitaire) pour trouver le total de la transaction. Puisqu'il est possible de trouver le total à partir des informations des tables, il est inutile d'avoir un champ "Total" dans l'une des tables. Placez
le curseur dans la case vide à la droite du champ Prix unitaire. Comme pour tous les champs calculés, il faut lui donner un nom (Total). Il faut ensuite séparer le nom de la formule en écrivant un ":". Il reste qu'à écrire la formule. Ce champ va donner le total de chacun des items de la facture.
|
Abonnez-vous à l'infolettre Abonnez-vous à l'infolettre du site pour recevoir les dernières nouvelles et aussi des formations à votre courriel. Vous pouvez voir la liste des dernières infolettres ici. |