Créer, modifier ou supprimer une relation
Applies ToAccess pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Une relation dans Access vous aide à combiner des données de deux tables différentes. Chaque relation implique des champs de deux tables et les données correspondantes. Par exemple, vous pouvez avoir un champ RéfProduit dans une table Produits et dans une table DétailsCommande. Chaque enregistrement de la table DétailsCommande présente une RéfProduit qui correspond à un enregistrement dans la table Produits avec la même RéfProduit.

Lorsque vous utilisez des tables associées dans une requête, la relation laisse Access déterminer quels enregistrements de chaque table combiner dans le jeu de résultats. Une relation permet d’éviter que des données manquent, en empêchant que des données supprimées soient désynchronisées. C’est ce qu’on appelle l’intégrité référentielle.

Avant d’utiliser des relations, vous devez en comprendre les concepts sous-jacents. Pour plus d’informations, voir Guide pour les relations entre tables et Utiliser des relations entre les tables.

Contenu de cet article

Vue d’ensemble

Dans une base de données Access, vous créez une relation entre tables à l’aide de l’une des méthodes suivantes :

  • Dans la fenêtre Relations, ajoutez les tables que vous voulez mettre en relation, puis faites glisser le champ pour les lier d’une table à l’autre.

  • Faites glisser un champ dans une feuille de données de table depuis le volet Liste des 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. Les champs communs doivent avoir le même type de données. Cependant, si le champ de clé primaire est un 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 la propriété TailleChamp.

Haut de la page

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

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur Ajouter des tables.

  3. Sélectionnez plusieurs tables ou requêtes, puis cliquez sur Ajouter. Une fois que vous avez terminé d’ajouter des tables et des requêtes dans l’onglet de document Relations, cliquez sur Fermer.

  4. Faites glisser un champ (généralement une clé primaire) d’une table vers le 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.Boîte de dialogue Modifier les relations dans access avec les champs de jointure Clients et Commandes

  5. Vérifiez que les noms de champ affichés sont des champs communs pour la relation. Si le nom d’un champ est incorrect, cliquez sur le nom du champ et sélectionnez le champ approprié dans la liste. Pour appliquer l’intégrité référentielle à 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 la section Appliquer l’intégrité référentielle.

  6. Cliquez sur Créer.

    Access dessine une ligne de relation entre les deux tables. Si vous avez activé la case à cocher Appliquer l’intégrité référentielle, la ligne est épaissie à chaque extrémité. En outre, si vous avez activé la case à cocher Appliquer l’intégrité référentielle, le chiffre 1 apparaît au-dessus de la partie épaisse sur un côté de la ligne de relation, et le symbole infini () apparaît au-dessus de la partie épaisse sur l’autre côté, comme illustré ci-dessous.Faites glisser un champ d’une table vers le champ correspondant dans l’autre table.

    Remarques : 

    • Pour créer une relation un-à-un    Les deux champs communs (généralement, les champs clé primaire et clé étrangère) doivent comporter un index unique. En d’autres termes, la propriété Indexé de ces champs doit avoir 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 du 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 avoir la valeur Oui (sans doublon). Le champ du côté plusieurs ne doit pas avoir d’index unique. Il peut avoir un index, mais les doublons doivent être autorisés. Autrement dit, la propriété Indexé de ce champ doit avoir la valeur Non ou Oui (avec doublons). Quand un champ a un index unique et que l’autre n’en a pas, Access crée une relation un-à-plusieurs.

Haut de la page

Créer une relation entre tables en utilisant le volet Liste de champs pour ajouter un champ

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 associées et les autres tables de la base 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 dans laquelle vous avez fait glisser le champ. Cette relation, créée par Access, 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.

Ouvrir une table en mode Feuille de données

  • Dans le volet de navigation, double-cliquez sur la table.

Ouvrir le volet Liste de champs

  • Appuyez sur Alt+F8. Le volet Liste de champs s’affiche.

    Volet Liste des champs

Le volet Liste de champs regroupe toutes les autres tables dans la base de données par catégories. Lorsque vous utilisez une table en mode Feuille de données, Access affiche les champs dans l’une des deux catégories 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 répertorie toutes les tables qui ont une relation avec la table en cours d’utilisation. La seconde catégorie répertorie toutes les tables avec lesquelles votre table n’a aucune relation.

Dans le volet Liste de champs, cliquez sur le signe plus (+) en regard du nom d’une table pour afficher la liste de tous les champs disponibles dans cette table. 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. La table étant ouverte en mode Feuille de données, appuyez sur Alt+F8. Le volet Liste de champs apparaît.

  2. 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.

  3. Faites glisser le champ de votre choix du volet Liste de champs vers la table ouverte en mode Feuille de données.

  4. Lorsque la ligne d’insertion apparaît, déposez le champ à l’endroit voulu.

    L’Assistant Liste de choix démarre.

  5. 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 dans laquelle vous avez fait glisser le champ. Cette relation, créée par Access, 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.

Haut de la page

Modifier une relation

Vous pouvez modifier une relation en la sélectionnant au préalable dans la fenêtre Relations.

  1. Positionnez avec soin le curseur pour qu’il pointe sur la ligne de relation, puis cliquez sur la ligne pour la sélectionner.

    Cette ligne de relation est plus épaisse lorsqu’elle est sélectionnée.

  2. Une fois la ligne de relation sélectionnée, double-cliquez dessus.

    -ou-

    Sous l’onglet Création de relations , dans le groupe Outils , cliquez sur Modifier les relations.

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

Ouvrir la boîte de dialogue Modifier des relations

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur 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.

  3. Cliquez sur la ligne de relation correspondant à la relation à modifier. Cette ligne de relation est plus épaisse lorsqu’elle est sélectionnée.

  4. Double-cliquez sur la ligne de relation.

    - ou -

    Sous l’onglet Création de relations , dans le groupe Outils , cliquez sur Modifier les relations.

    La boîte de dialogue Modifier des relations apparaît.

    Boîte de dialogue Modifier les relations dans access avec les champs de jointure Clients et Commandes

  5. 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 ou les requêtes de chaque côté de la relation, ou les champs de chaque côté. 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, puis que vous créez une requête utilisant ces deux 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 dans 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 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. Imaginons, par exemple, une requête qui joint la table Clients et la table Commandes dans les champs communs et qui représente la référence 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.

Cela 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, en passant d’une jointure interne à une jointure externe gauche. Une jointure externe gauche renvoie toutes les lignes de la table sur le côté gauche de la relation et les valeurs correspondantes dans la table sur le côté droit. 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 » font référence à l’emplacement des tables dans la boîte de dialogue Modifier des relations, et non dans la fenêtre Relations.

Vous devez réfléchir au résultat que vous souhaitez généralement obtenir d’une requête qui joint les tables de cette relation, puis définir le type de jointure en conséquence.

Définir le type de jointure

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

    La boîte de dialogue Propriétés de la jointure apparaît.La boîte de dialogue Propriétés de jointure dans Access s’affiche avec trois options de jointures. La première option est sélectionnée pour inclure uniquement les lignes où les champs joints des deux tables sont égaux.

  2. Sélectionnez 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 renvoyées 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 lorsque 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 lorsque les champs joints sont égaux.

Jointure externe droite

Lignes correspondantes

Toutes les lignes

Lorsque votre choix est le deuxième ou le troisième 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 ne présente que des lignes correspondantes.

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

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur Toutes les relations. Toutes les tables avec des relations sont affichées et 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.

  3. Cliquez sur la ligne de relation correspondant à la relation à modifier. Cette ligne de relation est plus épaisse lorsqu’elle est sélectionnée.

  4. Double-cliquez sur la ligne de relation. La boîte de dialogue Modifier des relations apparaît.

  5. Cliquez sur Type de jointure.

  6. Dans la boîte de dialogue Propriétés de jointure , sélectionnez une option, puis cliquez sur OK.La boîte de dialogue Propriétés de jointure dans Access s’affiche avec trois options de jointures. La première option est sélectionnée pour inclure uniquement les lignes où les champs joints des deux tables sont égaux.

  7. Apportez éventuellement des modifications supplémentaires à la relation, puis cliquez sur OK.

Haut de la page

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

L’intégrité référentielle permet d’éviter les enregistrements orphelins, c’est-à-dire les enregistrements 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 qu’elle est appliquée, Access bloque toute opération susceptible d’enfreindre cette intégrité. En d’autres termes, Access rejette les mises à jour qui modifient la cible d’une référence et les suppressions qui suppriment la cible d’une référence. Si vous souhaitez qu’Access propage les mises à jour et les suppressions référentielles afin de modifier toutes les lignes associées en conséquence, voir la section Définir les options en cascade.

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

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur 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.

  3. Cliquez sur la ligne de relation correspondant à la relation à modifier. Cette ligne de relation est plus épaisse lorsqu’elle est sélectionnée.

  4. Double-cliquez sur la ligne de relation. La boîte de dialogue Modifier des relations apparaît.

  5. Activez ou désactivez la case à cocher Appliquer l’intégrité référentielle.

  6. Apportez éventuellement des modifications supplémentaires à la relation, puis cliquez sur OK.

Si vous appliquez l’intégrité référentielle, les règles suivantes s’appliquent :

  • Vous ne pouvez pas entrer de valeur dans le champ clé étrangère d’une table associée si cette valeur n’existe pas dans le champ clé primaire de la table primaire (cette opération revient à créer des enregistrements orphelins). 

  • Vous ne pouvez pas supprimer d’enregistrement 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 lignes sont affectées à cette 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 vous avez des difficultés à activer l’intégrité référentielle, notez que les conditions suivantes doivent être réunies :

    • Le champ commun de la table primaire doit être une clé primaire ou posséder un index unique.

    • Les champs communs doivent avoir le même type de données, à l’exception du champ NuméroAuto que vous pouvez lier à un champ numérique, à condition que la propriété TailleChamp de ce dernier ait la valeur Entier long.

    • Les deux tables existent dans la même base de données Access. Vous ne pouvez pas appliquer l’intégrité référentielle sur des tables attachées. Cependant, si le format des tables sources 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 que vous ayez besoin de modifier la valeur sur le côté « un » d’une relation. Si tel est le cas, Access doit automatiquement mettre à jour toutes les lignes affectées en une seule fois. Ainsi, la mise à jour est entièrement terminée et votre base de données reste cohérente , vous n’avez pas des 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.

Vous risquez aussi de devoir supprimer une ligne et tous les enregistrements correspondants , par exemple, un enregistrement Expéditeur et toutes les commandes associées à cet expéditeur. C’est pourquoi, Access prend en charge l’option Effacer en cascade les enregistrements correspondants. Lorsque vous appliquez l’intégrité référentielle et que vous activez la case à cocher Effacer en cascade les enregistrements correspondants, Access supprime automatiquement tous les enregistrements qui référencent la clé primaire lorsque vous supprimez l’enregistrement contenant la clé primaire.

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

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur 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.

  3. Cliquez sur la ligne de relation correspondant à la relation à modifier. Cette ligne de relation est plus épaisse lorsqu’elle est sélectionnée.

  4. Double-cliquez sur la ligne de relation. La boîte de dialogue Modifier des relations s’affiche.

  5. Activez la case à cocher Appliquer l’intégrité référentielle.

  6. Activez la case à cocher Mettre à jour en cascade les champs correspondants ou Effacer en cascade les enregistrements correspondants, ou activez les deux.

  7. 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 modifier les valeurs d’un champ de type NuméroAuto.

Haut de la page

Supprimer une relation entre tables

Important : 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.

Pour supprimer une relation entre les tables, vous devez supprimer la ligne de relation dans la fenêtre Relations. Positionnez avec soin le curseur pour 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. Avec la ligne de relation sélectionnée, appuyez sur Suppr.

  1. Sous l’onglet Outils de base de données, dans le groupe Relations, cliquez sur Relations.

  2. Sous l’onglet Création de relations , dans le groupe Relations , cliquez sur 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.

  3. Cliquez sur la ligne de relation correspondant à la relation à supprimer. Cette ligne de relation est plus épaisse quand elle est sélectionnée.

  4. Appuyez sur la touche Suppr.

  5. 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 processus, soit dans un objet de base de données ouvert, tel qu’un formulaire , vous ne pouvez pas supprimer la relation. Vous devez fermer tous les objets ouverts qui utilisent ces tables avant de tenter de supprimer la relation.

Haut de la page

Voir aussi

Ajouter un champ de recherche à une table

Qu’est-ce que la fenêtre Relations ?

Comparer deux tables et rechercher des données correspondantes uniquement

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.