Guide pour les relations entre tables

Une conception appropriée de base de données permet de supprimer les données redondantes (doublons). Pour atteindre cet objectif, vous devez diviser vos données en plusieurs tables en fonction de leurs sujets, ainsi chaque fait n'est représenté qu'une seule fois. Vous configurez ensuite Microsoft Office Access 2007 de manière à rassembler les informations divisées . Pour ce faire, vous insérez les champs communs des tables liées. Ceci dit, vous effectuerez cette opération correctement après avoir assimilé les relations entre les tables, puis après les avoir spécifiées dans la base de données Office Access 2007.

Pour plus d'informations, voir l'article Concepts de base sur la conception d'une base de données.

Contenu de cet article


Introduction

Après la création d'une table pour chaque sujet de la base de données, vous devez permettre à Office Access 2007 de renvoyer ces informations en cas de besoin. Pour ce faire, vous insérez les champs communs dans les tables liées et vous définissez les relations entre ces tables. Vous pouvez alors créer des requêtes, des formulaires et des états qui affichent des informations issues de plusieurs tables simultanément. Par exemple, le formulaire suivant comporte des informations issues de plusieurs tables :

Formulaire Commandes affichant simultanément des informations complémentaires provenant de cinq tables

Légende 1 Les informations de ce formulaire proviennent de la table Clients...
Légende 2 ...de la table Commandes...
Légende 3 ...de la table Produits...
Légende 4 ...et de la table Détails commande.

Le nom du client dans la zone Facturer à provient de la table Clients, les valeurs Réf commande et Date de commande sont issues de la table Commandes, le nom Produit est issu de la table Produits, et les valeurs Prix unitaire et Quantité sont issues de la table Détails commande. Ces tables sont liées entre elles de diverses façons pour permettre l'insertion des informations de chacune d'elle dans un formulaire.

Dans l'exemple précédent, les champs de tables doivent être coordonnés pour afficher des informations sur la même commande. Les relations entre tables rendent cette coordination possible. Une relation entre les tables fonctionne en faisant correspondre les données dans les clés , il est fréquent d'associer un champ au nom identique dans les deux tables. Dans la plupart des cas, ces champs correspondants constituent la clé primaire issue d'une table, fournissant un identificateur unique pour chaque enregistrement, et une clé étrangère dans l'autre table. Par exemple, les employés peuvent être associés aux commandes dont ils sont responsables, en créant une relation entre les tables entre les champs RéfEmployé dans les tables Employés et Commandes.

Utilisation du champ Réf employé comme clé primaire et clé étrangère

Légende 1 RéfEmployé apparaît dans les deux tables , comme clé primaire...
Légende 2 ... et clé étrangère.

Haut de la page Haut de la page

Types de relations entre les tables

Il existe trois types de relations entre les tables.

  • Relation un-à-plusieurs

Considérez une base de données de suivi des commandes, dotée d'une table Clients et d'une table Commandes. Un client peut passer toutes les commandes qu'il souhaite. Pour tout client représenté dans la table Clients peuvent correspondre les commandes représentées dans la table Commandes. Ainsi, la relation entre la table Clients et la table Commandes est une relation un-à-plusieurs.

Pour représenter une relation un-à-plusieurs dans la structure de votre base de données, prenez la clé primaire sur le côté « un » de la relation et ajoutez-la comme champ supplémentaire à la table sur le côté « plusieurs » de cette relation. Dans ce cas, par exemple, vous ajoutez un nouveau champ  ; le champ Réf de la table Clients , à la table Commandes et vous l'appelez Réf client. Access peut alors utiliser le numéro de la Réf client dans la table Commandes pour rechercher le client approprié pour chaque commande.

  • Relation plusieurs-à-plusieurs

Considérez la relation entre une table Produits et une table Commandes. Une commande peut comprendre plusieurs produits. En revanche, un produit peut apparaître dans plusieurs commandes. Ainsi, vous pouvez avoir plusieurs enregistrements dans la table Produits pour chaque enregistrement de la table Commandes. En outre, vous pouvez avoir plusieurs enregistrements dans la table Commandes pour chaque enregistrement dans la table Produits. Ce type de relation est appelée relation plusieurs-à-plusieurs car vous pouvez avoir plusieurs enregistrements pour tout produit, et plusieurs produits pour toute commande. Vous pouvez détecter les relations plusieurs-à-plusieurs existantes entre les tables si vous prenez en considération les deux côtés de la relation.

Pour représenter une relation plusieurs-à-plusieurs, vous devez créer une troisième table, souvent appelée une table de jonction, qui décompose la relation plusieurs-à-plusieurs dans deux relations un-à-plusieurs. Vous devez ajouter la clé primaire de chacune des deux tables dans la troisième table. Par conséquent, la troisième table enregistre chaque occurrence ou instance de cette relation. Par exemple, la table Commandes et la table Produits ont une relation plusieurs-à-plusieurs qui est définie en créant deux relations un-à-plusieurs avec la table Détails commande. Une commande peut porter sur plusieurs produits et chaque produit peut apparaître dans plusieurs commandes.

  • Relation un-à-un

Dans une relation un-à-un, chaque enregistrement de la première table ne comporte qu'un seul enregistrement correspondant dans la deuxième table, et chaque enregistrement de cette deuxième table ne comporte qu'un seul enregistrement correspondant dans la première table. Ce type de relation n'est pas courant sachant que les informations ainsi liées sont en général stockées dans la même table. Vous pouvez utiliser une relation un-à-un pour diviser une table à plusieurs champs, pour isoler une partie d'une table pour des raisons de sécurité, ou pour stocker des informations ne s'appliquant qu'à un sous-ensemble de la table principale. Lorsque vous identifiez une telle relation, les deux tables doivent partager un champ commun.

Haut de la page Haut de la page

Pourquoi créer des relations entre les tables ?

Vous pouvez explicitement créer des relations entre tables en utilisant la fenêtre Relations, ou en faisant glisser un champ depuis le volet Liste de champs. Office Access 2007 a recours aux relations entre les tables pour joindre les tables dont vous avez besoin dans un objet de base de données. Il existe plusieurs raisons pour créer des relations entre tables avant de créer d'autres objets de base de données, tels que des formulaires, des requêtes et des états.

  • Les relations entre tables renseignent les structures de requêtes

Pour utiliser des enregistrements issus de plusieurs tables, vous devez souvent créer une requête qui joint les tables. La requête fonctionne en faisant correspondre les valeurs de la clé primaire dans la première table avec une clé étrangère dans la deuxième table. Par exemple, pour renvoyer les lignes qui répertorient toutes les commandes pour chaque client, vous devez créer une requête qui joint la table Clients à la table Commandes en fonction du champ Réf client. Dans la fenêtre Relations, vous pouvez préciser manuellement les champs à joindre. Néanmoins, si la relation est déjà définie entre les tables, Office Access 2007 fournit la jointure par défaut, en fonction de la relation existante entre tables. En outre, si vous utilisez l'un des Assistants Requête, Access exploite les informations des relations entre tables que vous avez déjà définies pour vous proposer plusieurs choix pertinents et pour renseigner au préalable les paramètres de propriété avec les valeurs par défaut appropriées.

  • Les relations entre tables renseignent les structures de formulaires et d'états

Lorsque vous concevez un formulaire ou un état, Office Access 2007 exploite les informations des relations entre tables que vous avez déjà définies pour vous proposer plusieurs choix pertinents et pour renseigner au préalable les paramètres de propriété avec les valeurs par défaut appropriées.

  • Les relations entre tables vous permettent d'appliquer l'intégrité référentielle pour éviter les enregistrements orphelins dans votre base de données. Un enregistrement orphelin est un enregistrement qui fait référence à un autre enregistrement qui n'existe pas  ; par exemple un enregistrement de commande qui fait référence à un enregistrement de client non existant.

Lorsque vous créez une base de données, vous divisez les informations entre plusieurs tables, dont chacune comporte une clé primaire. Vous ajoutez alors des clés étrangères aux tables liées qui font référence à ces clés primaires. Ces paires de clés représentent la base des relations entre tables et des requêtes à plusieurs tables. Par conséquent, il est important que ces références de clés primaires-étrangères demeurent synchronisées. L'intégrité référentielle permet de synchroniser les références ; elle dépend des relations entre tables.

Haut de la page Haut de la page

Comprendre l'intégrité référentielle

Lorsque vous créez une base de données, vous divisez vos informations en plusieurs tables en fonction de leurs sujets pour réduire la redondance de données. Vous configurez alors Office Access 2007 de manière à rassembler les données en plaçant les champs courants dans les tables liées. Par exemple, pour représenter une relation un-à-plusieurs, vous prenez la clé primaire de la table « une », et vous l'ajoutez comme champ supplémentaire à la table « plusieurs ». Pour rassembler les données, Access prend la valeur de la table « plusieurs » et recherche la valeur correspondante dans la table « une ». Ainsi, les valeurs de la table « plusieurs » font référence aux valeurs correspondantes dans la table « une ».

Imaginons que vous ayez une relation un-à-plusieurs entre les tables Expéditeurs et Commandes et que vous souhaitiez supprimer une table Expéditeur. Si l'expéditeur à supprimer comporte des commandes dans la table Commandes, celles-ci deviennent « orphelines » dès lors que vous supprimez l'enregistrement Expéditeur. Ceci dit, les commandes comprennent une référence de l'expéditeur, sans qu'elle ne soit valide pour autant, car l'enregistrement référencé n'existe plus.

L'intégrité référentielle consiste à empêcher les orphelins et à synchroniser les références pour éviter que cette situation hypothétique ne se produise.

Vous appliquez l'intégrité référentielle en l'activant pour une relation entre tables (voir Appliquer l'intégrité référentielle pour obtenir des instructions détaillées). Une fois cette intégrité appliquée, Access bloque toute opération susceptible de l'enfreindre. En d'autres termes, Access bloque les mises à jour qui modifient la cible d'une référence, et les suppressions qui l'éliminent. Cependant, une modification de clé primaire pour un expéditeur dans la table Commandes peut s'avérer totalement justifiée. Dans ces cas de figure, vous souhaitez qu'Access mette automatiquement à jour toutes les lignes concernées dans le cadre d'une seule opération. Ainsi, Access assure une mise à jour complète évitant toute incohérence dans votre base de données, avec certaines lignes mises à jour et d'autres pas. Pour cette raison, Access prend en charge l'option Mettre à jour en cascade les champs correspondants. Lorsque vous appliquez l'intégrité référentielle, que vous choisissez l'option Mettre à jour en cascade les champs correspondants, et que vous mettez à jour une clé primaire, Access met automatiquement à jour tous les champs qui référencent la clé primaire.

Il se peut que vous ayez besoin de supprimer une ligne et tous ses enregistrements associés  ; par exemple, un enregistrement Expéditeur et toutes ses commandes associées. C'est pourquoi, Access prend en charge l'option Effacer en cascade les enregistrements correspondants. Lorsque vous appliquez l'intégrité référentielle, que vous choisissez l'option Effacer en cascade les enregistrements correspondants, que vous supprimez un enregistrement sur le côté de la clé primaire de la relation, Access supprime automatiquement tous les enregistrements qui référencent la clé primaire.

Haut de la page Haut de la page

Afficher les relations entre les tables

Pour afficher les relations entre tables, cliquez sur Relations dans l'onglet Outils de base de données. La fenêtre Relations s'ouvre et affiche toutes les relations existantes. Si aucune relation entre tables n'a encore été définie et si vous ouvrez la fenêtre Relations pour la première fois, Access vous invite à ajouter une table ou une requête à cette fenêtre.

Ouvrir la fenêtre Relations

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

  1. Si la base de données contient des relations, la fenêtre Relations apparaît. Si la base de données ne contient aucune relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Cliquez sur Fermer pour fermer la boîte de dialogue.
  2. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

C'est ainsi que sont affichées toutes les relations définies dans la base de données. Notez que les tables masquées (tables dont la case à cocher Masqué dans la boîte de dialogue Propriétés de la table est activée) et leurs relations ne sont pas affichées, à moins que la case à cocher Afficher les objets masqués ne soit activée dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les objets masqués, voir l'article Guide pour les relations entre tables.

Fenêtre Relations

Légende 1 Clé primaire
Légende 2 Cette ligne représente la relation
Légende 3 Clé étrangère

Une relation entre tables est représentée par une ligne de relation tracée entre les tables dans la fenêtre Relations. Une relation, qui n'applique pas d'intégrité référentielle, s'affiche tel un trait fin entre les champs communs prenant en charge la relation. Lorsque vous sélectionnez la relation en cliquant sur son trait, celui-ci s'épaissit pour indiquer qu'il est sélectionné. Si vous appliquez l'intégrité référentielle pour cette relation, le trait s'épaissit à chaque extrémité. En outre, le chiffre 1 s'affiche sur la section épaisse du trait sur un côté de la relation, alors que le symbole infini () s'affiche au-dessus de la partie épaisse du trait de l'autre côté.

Lorsque la fenêtre Relations est active, vous pouvez sélectionner les commandes suivantes dans le ruban qui fait partie de l'Interface utilisateur Microsoft Office Fluent:

Dans l'onglet Créer, du groupe Outils :

  • Modifier des relations    Ouvre la boîte de dialogue Modifier des relations. Lorsque vous sélectionnez une ligne de relation, vous pouvez cliquer sur Modifier des relations pour modifier la relation entre tables. Vous pouvez également double-cliquer sur la ligne de relation.
  • Effacer la mise en page    Supprime l'affichage de toutes les tables et relations dans la fenêtre Relations. Notez que cette commande ne masque que les tables et les relations  ; elle ne les supprime pas.
  • Rapport de relations    Crée un rapport qui affiche les tables et les relations dans la base de données. Ce rapport n'affiche que les tables et les relations qui ne sont pas masquées dans la fenêtre Relations.

Dans l'onglet Créer, du groupe Relations :

  • Afficher la table    Ouvre la boîte de dialogue Afficher la table afin que vous puissiez sélectionner des tables et des requêtes pour un affichage dans la fenêtre Relations.
  • Masquer la table    Masque la table sélectionnée dans la fenêtre Relations.
  • Afficher les relations directes    Affiche toutes les relations et les tables liées pour la table sélectionnée dans la fenêtre Relations, si elle ne sont pas déjà affichées.
  • Toutes les relations    Affiche toutes les relations et les tables liées dans la base de données pour la fenêtre Relations. Notez que les tables masquées (tables dont la case à cocher Masqué dans la boîte de dialogue Propriétés de la table est activée) et leurs relations ne sont pas affichées, à moins que la case à cocher Afficher les objets masqués ne soit activée dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les tables masquées, voir l'article Guide pour le volet de navigation.

  • Fermer    Ferme la fenêtre Relations. Si vous avez apporté des modifications à la mise en page de la fenêtre Relations, le système vous invite à les enregistrer.

Haut de la page Haut de la page

Créer une relation entre tables

Vous pouvez créer une relation entre tables en utilisant la fenêtre Relations, ou en faisant glisser un champ sur une feuille de données depuis le volet Liste de champs. Lorsque vous créez une relation entre tables, les champs communs ne portent pas obligatoirement le même nom, bien qu'il en soit souvent ainsi. En revanche, les champs communs doivent avoir le même type de données. Cependant, si le champ de clé primaire est un champ NuméroAuto, le champ de clé étrangère peut également être un champ numérique, si la propriété TailleChamp des deux champs est identique. Par exemple, vous pouvez faire correspondre un champ NuméroAuto avec un champ numérique si la valeur de la propriété TailleChamp des deux champs est Entier long. Lorsque les deux champs communs sont des champs de type numérique, ils doivent avoir le même paramétrage de propriété TailleChamp.

Créer une relation entre tables avec la fenêtre Relations

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

  1. Si vous n'avez encore défini de relations, la boîte de dialogue Afficher la table s'affiche automatiquement. Si tel n'est pas le cas, sous l'onglet Créer, du groupe Relations, cliquez sur Afficher la table.

La boîte de dialogue Afficher la table affiche toutes les tables et requêtes de la base de données. Pour n'afficher que les tables, cliquez sur Tables. Pour n'afficher que les requêtes, cliquez sur Requêtes. Pour afficher les tables et les requêtes, cliquez sur Les deux.

  1. Sélectionnez plusieurs tables ou requêtes, puis cliquez sur Ajouter. Après avoir ajouté les tables et les requêtes à la fenêtre Relations, cliquez sur Fermer.
  2. Faites glisser un champ (généralement une clé primaire) d'une table au champ commun (clé étrangère) dans l'autre table. Pour faire glisser plusieurs champs, appuyez sur CTRL, cliquez sur chaque champ, puis faites-les glisser.

La boîte de dialogue Modifier des relations s'affiche.

  1. Vérifiez que les noms de champ affichés sont des champs communs pour la relation. Si un nom de champ est incorrect, cliquez sur le nom du champ et sélectionnez un nouveau champ dans la liste.

Pour appliquer l'intégrité référentielle pour cette relation, activez la case à cocher Appliquer l'intégrité référentielle. Pour plus d'informations sur l'intégrité référentielle, voir les sections Comprendre l'intégrité référentielle et Appliquer l'intégrité référentielle.

  1. Cliquez sur Créer.

La ligne de relation est tracée entre les deux tables. Si vous avez activé la case à cocher Appliquer l'intégrité référentielle, le trait s'épaissit à chaque extrémité. En outre, à condition d'avoir coché la case à cocher Appliquer l'intégrité référentielle, le chiffre 1 s'affiche sur la section épaisse du trait sur un côté de la relation, alors que le symbole infini () s'affiche au-dessus de la partie épaisse du trait de l'autre côté.

Faire glisser un champ depuis une table au champ correspondant dans l'autre table

 Remarques 

  • Pour créer une relation un-à-un    Les deux champs communs (généralement, la clé primaire et la clé étrangère) doivent comporter un index unique. En d'autres termes, la propriété Indexé de ces champs doit être définie sur la valeur Oui (sans doublon). Si ces deux champs ont un index unique, Access crée une relation un-à-un.
  • Pour créer une relation un-à-plusieurs    Le champ sur le côté « un » (généralement la clé primaire) de la relation doit comporter un index unique. En d'autres termes, la propriété Indexé de ce champ doit être définie sur la valeur Oui (sans doublon). Le champ sur le côté « plusieurs » ne doit pas avoir d'index unique. Il peut avoir un index, mais les doublons doivent être autorisés. En d'autres termes, la propriété Indexé de ce champ doit être définie sur la valeur Non, ou Oui (avec doublons). Lorsqu'un champ a un index unique et que l'autre n'en a pas, Access crée une relation un-à-plusieurs.

Créer une relation entre tables avec le volet Liste de champs

Dans Office Access 2007, vous pouvez ajouter un champ à une table existante ouverte en mode Feuille de données, en le faisant glisser depuis le volet Liste de champs. Le volet Liste de champs affiche les champs disponibles dans les tables liées, ainsi que les champs disponibles dans d'autres tables. Lorsque vous faites glisser un champ depuis une « autre » table (non liée) et que vous exécutez l'Assistant Liste de choix, Access crée automatiquement une nouvelle relation un-à-plusieurs entre la table du volet Liste de champs et la table cible du champ. Cette relation n'applique pas l'intégrité référentielle par défaut. Pour ce faire, vous devez modifier la relation. Pour plus d'informations, voir la section Modifier une relation entre tables.

Ouvrir une table en mode Feuille de données

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Dans le volet de navigation, cliquez avec le bouton droit sur la table à laquelle vous souhaitez ajouter le champ, créez la relation, puis cliquez sur Mode Feuille de données dans le menu contextuel.

Ouvrir le volet Liste de champs

  • Sous l'onglet Feuille de données, dans le groupe Champs et colonnes, cliquez sur Ajouter des champs existants.

Image du ruban Access

Le volet Liste de champs apparaît.

Le volet Liste de champs affiche toutes les autres tables de la base de données, regroupées en catégories. Lorsque vous ouvrez une table en mode Feuille de données, les champs de l'une des deux catégories suivantes s'affichent dans le volet Liste de champs : Champs disponibles dans les tables associées et Champs disponibles dans les autres tables. La première catégorie fournit la liste de toutes les tables en relation avec la table en cours d'utilisation, tandis que la seconde fournit la liste de toutes les tables qui ne sont pas liées à votre table.

Dans le volet Liste de champs, cliquez sur le signe plus (+) en regard du nom d'une table pour afficher la liste des champs disponibles. Pour ajouter un champ à la table, faites glisser le champ du volet Liste de champs vers la table en mode Feuille de données.

Ajouter un champ et créer une relation dans le volet Liste de champs

  1. Sous l'onglet Feuille de données, dans le groupe Champs et colonnes, cliquez sur Ajouter des champs existants.

Image du ruban Access

Le volet Liste de champs apparaît.

  1. Sous Champs disponibles dans les autres tables, cliquez sur le signe plus (+) en regard d'un nom de table pour y afficher la liste des champs.
  2. Faites glisser le champ de votre choix du volet Liste de champs vers la table ouverte en mode Feuille de données.
  3. Lorsque la ligne d'insertion apparaît, déposez le champ à l'endroit voulu.

L'Assistant Liste de choix démarre.

  1. Suivez les instructions pour exécuter l'Assistant Liste de choix.

Le champ apparaît dans la table en mode Feuille de données.

Lorsque vous faites glisser un champ depuis une « autre » table (non liée) et que vous exécutez l'Assistant Liste de choix, Access crée automatiquement une nouvelle relation un-à-plusieurs entre la table du volet Liste de champs et la table cible du champ. Cette relation n'applique pas l'intégrité référentielle par défaut. Pour ce faire, vous devez modifier la relation. Pour plus d'informations, voir la section Modifier une relation entre les tables.

Haut de la page Haut de la page

Supprimer une relation entre les tables

Pour supprimer une relation entre les tables, vous devez supprimer la ligne de relation dans la fenêtre Relations. Positionnez avec soin le curseur de sorte qu'il pointe sur la ligne de relation, puis cliquez sur la ligne. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée. Une fois la ligne de relation sélectionnée, appuyez sur SUPPR. Notez que lorsque vous supprimez une relation, vous supprimez également la prise en charge de l'intégrité référentielle pour cette relation si elle est activée. Par conséquent, Access n'empêchera plus automatiquement la création d'enregistrements orphelins sur le côté « plusieurs » d'une relation.

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

La fenêtre Relations s'affiche.

Si vous n'avez encore défini de relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Si la boîte de dialogue s'affiche, cliquez sur Fermer.

  1. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

Toutes les tables avec des relations sont affichées, elles illustrent des lignes de relation.

  1. Cliquez sur la ligne de relation pour la relation à supprimer. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée.
  2. Appuyez sur la touche SUPPR.

- ou -

Cliquez avec le bouton droit, puis cliquez sur SUPPR.

  1. Access peut afficher le message suivant : Êtes-vous sûr de vouloir supprimer la relation sélectionnée dans votre base de données de manière permanente ?. Si ce message de confirmation s'affiche, cliquez sur Oui.

 Remarque   Si l'une des tables dans la relation est utilisée, soit par une autre personne ou un autre processus, soit dans un objet de base de données ouvert (tel qu'un formulaire), vous ne pouvez pas supprimer la relation. Vous devez d'abord fermer tous les objets ouverts qui utilisent ces tables avant de supprimer la relation.

Haut de la page Haut de la page

Modifier une relation entre les tables

Vous modifiez une relation entre les tables en la sélectionnant au préalable dans la fenêtre Relations. Positionnez avec soin le curseur de sorte qu'il pointe sur la ligne de relation, puis cliquez sur la ligne. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée. Une fois la ligne de relation sélectionnée, double-cliquez dessus ou cliquez sur Modifier des relations dans le groupe Outils de l'onglet Créer. La boîte de dialogue Modifier des relations s'affiche.

Apporter vos modifications dans la boîte de dialogue Modifier des relations

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

La fenêtre Relations s'affiche.

Si vous n'avez encore défini de relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Si la boîte de dialogue s'affiche, cliquez sur Fermer.

  1. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

Toutes les tables avec des relations sont affichées, elles illustrent des lignes de relation. Notez que les tables masquées (tables pour lesquelles la case à cocher Masqué est activée dans la boîte de dialogue Propriétés de la table) et leurs relations ne sont pas affichées à moins de sélectionner l'option Afficher les objets masqués dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les objets masqués, voir l'article Guide pour le volet de navigation.

  1. Cliquez sur la ligne de relation pour la relation à modifier. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée.
  2. Double-cliquez sur la ligne de relation.

- ou -

Sous l'onglet Créer, dans le groupe Outils, cliquez sur Modifier des relations.

La boîte de dialogue Modifier des relations s'affiche.

Boîte de dialogue Modifier des relations

  1. Apportez vos modifications, puis cliquez sur OK.

La boîte de dialogue Modifier des relations vous permet de modifier une relation entre tables. Vous pouvez en particulier modifier les tables, requêtes ou champs de chaque côté de la relation. Vous pouvez également définir le type de jointure ou appliquer l'intégrité référentielle, et choisir une option en cascade. Pour plus d'informations sur le type de jointure et son mode d'affichage, voir la section Définir le type de jointure. Pour plus d'informations sur le mode d'application de l'intégrité référentielle et le choix d'une option en cascade, voir la section Appliquer l'intégrité référentielle.

Définir le type de jointure

Lorsque vous définissez une relation entre tables, les faits sur la relation renseignent les structures de la requête. Par exemple, si vous définissez une relation entre deux tables, avant de créer une requête utilisant ces tables, Access sélectionne automatiquement les champs correspondants par défaut en fonction des champs spécifiés dans la relation. Vous pouvez remplacer ces valeurs initiales par défaut dans la requête, mais les valeurs fournies par la relation s'avèrent souvent être les bonnes. Étant donné que la correspondance et la collecte de données depuis plusieurs tables sont des opérations fréquentes sur toutes les bases de données à l'exception des plus simples, la définition des valeurs par défaut reposant sur la création de relations peut être vous faire gagner du temps et économiser de l'argent.

Une requête de plusieurs tables combine des informations issues de plusieurs tables en faisant correspondre les valeurs dans les champs communs. La jointure consiste à faire correspondre et combiner les valeurs. Imaginons, par exemple, que vous souhaitiez afficher des commandes clients. Vous créez une requête qui joint la table Clients et la table Commandes dans le champ Référence client. Le résultat de requête contient les informations sur les clients et les commandes uniquement pour les lignes dotées d'une valeur correspondante.

Le type de jointure est l'une des valeurs que vous pouvez spécifier pour chaque relation. Le type de jointure renseigne Access sur les enregistrements à inclure dans un résultat de requête. Par exemple, prenez en considération une requête qui joint la table Clients à la table Commandes sur les champs communs qui représentent la Réf client. Si vous utilisez le type de jointure par défaut (appelé jointure interne), la requête renvoie uniquement les lignes Client et Commande pour lesquelles les champs communs (également appelés champs joints) sont égaux.

Ceci dit, vous pouvez inclure tous les clients , même ceux qui n'ont pas encore passé de commandes. Pour ce faire, vous devez modifier le type de jointure d'une jointure interne en jointure externe gauche. Une jointure externe gauche renvoie toutes les lignes de gauche et les lignes correspondantes sur la table de droite. Une jointure externe droite renvoie toutes les lignes de droite et les valeurs correspondantes sur le côté gauche.

 Remarque   Dans ce cas de figure, « gauche » et « droite » se réfèrent à l'emplacement des tables dans la boîte de dialogue Modifier des relations, et non dans la fenêtre Relations.

Considérez le résultat que vous souhaitez le plus souvent obtenir d'une requête, qui joint les tables dans cette relation, puis définissez le type de jointure en connaissance de cause.

Définir le type de jointure

  1. Dans la boîte de dialogue Modifier des relations, cliquez sur Type jointure.

La boîte de dialogue Propriétés de la jointure apparaît.

  1. Cliquez sur votre choix, puis cliquez sur OK.

Le tableau suivant (contenant les tables Clients et Commandes) répertorie les trois choix affichés dans la boîte de dialogue Propriétés de la jointure, le type de jointure utilisé et indique si toutes les lignes ou lignes correspondantes sont comprises pour chaque table.

Choix Jointure relationnelle Table de gauche Table de droite
1. Inclure seulement les lignes des deux tables pour lesquelles les champs joints sont égaux. Jointure interne Lignes correspondantes Lignes correspondantes
2. Inclure TOUS les enregistrements de la table Clients et seulement ceux de la table Commandes pour lesquels les champs joints sont égaux. Jointure externe gauche Toutes les lignes Lignes correspondantes
3. Inclure TOUS les enregistrements de la table Commandes et seulement ceux de la table Clients pour lesquels les champs joints sont égaux. Jointure externe droite Lignes correspondantes Toutes les lignes

Lorsque votre choix porte sur la deuxième ou troisième option de cette liste, une flèche s'affiche sur la ligne de relation. Cette flèche pointe sur le côté de la relation qui n'affiche que les lignes correspondantes.

Apporter les modifications dans la boîte de dialogue Propriétés de la jointure

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

La fenêtre Relations s'affiche.

Si vous n'avez encore défini de relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Si la boîte de dialogue s'affiche, cliquez sur Fermer.

  1. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

Toutes les tables avec des relations sont affichées, elles illustrent des lignes de relation. Notez que les tables masquées (tables pour lesquelles la case à cocher Masqué est activée dans la boîte de dialogue Propriétés de la table) et leurs relations ne sont pas affichées à moins de sélectionner l'option Afficher les objets masqués dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les objets masqués, voir l'article Guide pour le volet de navigation.

  1. Cliquez sur la ligne de relation pour la relation à modifier. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée.
  2. Double-cliquez sur la ligne de relation.

- ou -

Sous l'onglet Créer, dans le groupe Outils, cliquez sur Modifier des relations.

La boîte de dialogue Modifier des relations s'affiche.

  1. Cliquez sur Type jointure
  2. Dans la boîte de dialogue Propriétés de la jointure, cliquez sur une option, puis cliquez sur OK.

Boîte de dialogue Propriétés de la jointure

  1. Effectuez les modifications supplémentaires dans la relation, puis cliquez sur OK.

Haut de la page Haut de la page

Appliquer l'intégrité référentielle

L'intégrité référentielle permet d'éviter les enregistrements orphelins et de synchroniser les références pour éviter les enregistrements qui en référencent d'autres qui n'existent plus. Vous appliquez l'intégrité référentielle en l'activant pour une relation entre tables. Une fois cette intégrité appliquée, Access bloque toute opération susceptible de l'enfreindre. En d'autres termes, Access bloque les mises à jour qui modifient la cible d'une référence, et les suppressions qui l'éliminent. Pour qu'Access propage les mises à jour et les suppressions référentielles, afin que toutes les lignes liées soient modifiées en conséquence, voir la section Définir les options en cascade.

Activer ou désactiver l'intégrité référentielle

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

La fenêtre Relations s'affiche.

Si vous n'avez encore défini de relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Si la boîte de dialogue s'affiche, cliquez sur Fermer.

  1. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

Toutes les tables avec des relations sont affichées, elles illustrent des lignes de relation. Notez que les tables masquées (tables pour lesquelles la case à cocher Masqué est activée dans la boîte de dialogue Propriétés de la table) et leurs relations ne sont pas affichées à moins de sélectionner l'option Afficher les objets masqués dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les objets masqués, voir l'article Guide pour le volet de navigation.

  1. Cliquez sur la ligne de relation pour la relation à modifier. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée.
  2. Double-cliquez sur la ligne de relation.

- ou -

Sous l'onglet Créer, dans le groupe Outils, cliquez sur Modifier des relations.

La boîte de dialogue Modifier des relations s'affiche.

  1. Activez la case à cocher Appliquer l'intégrité référentielle.
  2. Effectuez les modifications supplémentaires dans la relation, puis cliquez sur OK.

Après avoir appliqué l'intégrité référentielle, les règles suivantes s'appliquent :

  • Vous ne pouvez pas entrer de valeur dans un champ de clé étrangère pour une table liée si cette valeur n'existe pas dans le champ de clé primaire de la table primaire , cette opération revient à créer des enregistrements orphelins.
  • Vous ne pouvez pas supprimer d'enregistrements dans une table primaire si les enregistrements correspondants existent dans une table associée. Par exemple, vous ne pouvez pas supprimer l'enregistrement d'un employé dans la table Employés si des commandes lui sont affectées dans la table Commandes. En revanche, vous pouvez supprimer un enregistrement primaire et tous les enregistrements correspondants en une seule fois, si vous activez la case à cocher Effacer en cascade les enregistrements correspondants.
  • Vous ne pouvez pas modifier une valeur de clé primaire dans la table primaire si cette opération se solde par des enregistrements orphelins. Par exemple, vous ne pouvez pas modifier un numéro de commande dans la table Commandes si des éléments de ligne sont affectés à Commande dans la table Détails commande. En revanche, vous pouvez mettre à jour un enregistrement primaire et tous les enregistrements correspondants en une seule fois, si vous activez la case à cocher Mettre à jour en cascade les champs correspondants.

 Remarques 

Si l'application de l'intégrité référentielle vous pose des problèmes, notez que vous devez respecter les conditions suivantes :

  • Le champ commun de la table primaire doit être une clé primaire ou posséder un index unique.
  • Les champs communs ont le même type de données, à l'exception du champ NuméroAuto que vous pouvez lier à un champ numérique dont le paramétrage de propriété TailleChamp est Entier long.
  • Les deux tables doivent exister dans la même base de données Access. Vous ne pouvez pas appliquer l'intégrité référentielle sur des tables liées. Cependant, si le format des tables source est Access, vous pouvez ouvrir la base de données, où ces tables sont stockées, et y appliquer l'intégrité référentielle.

Définir les options en cascade

Il est probable qu'une modification de la valeur sur le côté « un » de la relation soit totalement justifiée. Dans ce cas de figure, vous souhaitez qu'Access mette automatiquement à jour toutes les lignes concernées dans le cadre d'une seule opération. Ainsi, Access assure une mise à jour complète évitant toute incohérence dans votre base de données , avec certaines lignes mises à jour et d'autres pas. Access vous permet de contourner ce problème en mettant à votre disposition l'option Mettre à jour en cascade les champs correspondants. Lorsque vous appliquez l'intégrité référentielle, lorsque vous choisissez l'option Mettre à jour en cascade les champs correspondants et lorsque vous mettez à jour une clé primaire, Access met automatiquement à jour tous les champs qui référencent la clé primaire.

Il se peut que vous ayez besoin de supprimer une ligne et tous ses enregistrements associés  ; par exemple, un enregistrement Expéditeur et toutes ses commandes associées. C'est pourquoi, Access prend en charge l'option Effacer en cascade les enregistrements correspondants. Lorsque vous appliquez l'intégrité référentielle, que vous choisissez l'option Effacer en cascade les enregistrements correspondants, que vous supprimez un enregistrement sur le côté de la clé primaire de la relation, Access supprime automatiquement tous les enregistrements qui référencent la clé primaire.

Activer ou désactiver la mise à jour en cascade et/ou la suppression en cascade

  1. Cliquez sur le bouton Microsoft Office Image du bouton, puis sur Ouvrir.
  1. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.
  2. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

Image du ruban Access

La fenêtre Relations s'affiche.

Si vous n'avez encore défini de relation et si vous ouvrez la fenêtre Relations pour la première fois, la boîte de dialogue Afficher la table apparaît. Si la boîte de dialogue s'affiche, cliquez sur Fermer.

  1. Sous l'onglet Créer, dans le groupe Relations, cliquez sur Afficher toutes les relations.

Toutes les tables avec des relations sont affichées, elles illustrent des lignes de relation. Notez que les tables masquées (tables pour lesquelles la case à cocher Masqué est activée dans la boîte de dialogue Propriétés de la table) et leurs relations ne sont pas affichées à moins de sélectionner l'option Afficher les objets masqués dans la boîte de dialogue Options de navigation.

Pour plus d'informations sur l'option Afficher les objets masqués, voir Guide pour le volet de navigation.

  1. Cliquez sur la ligne de relation pour la relation à modifier. Cette ligne de relation est plus épaisse lorsqu'elle est sélectionnée.
  2. Double-cliquez sur la ligne de relation.

- ou -

Sous l'onglet Créer, dans le groupe Outils, cliquez sur Modifier des relations.

La boîte de dialogue Modifier des relations s'affiche.

  1. Activez la case à cocher Appliquer l'intégrité référentielle.
  2. Activez la case à cocher Mettre à jour en cascade les champs correspondants ou Effacer en cascade les enregistrements correspondants, ou activez les deux.
  3. Effectuez les modifications supplémentaires dans la relation, puis cliquez sur OK.

 Remarque   Si la clé primaire est un champ de type NuméroAuto, il est inutile d'activer la case à cocher Mettre à jour en cascade les champs correspondants car il est impossible de changer les valeurs d'un champ de type NuméroAuto.

Haut de la page Haut de la page

 
 
S'applique à :
Access 2007