Définition de relations entre les tables dans une base de données Microsoft Access

Traductions disponibles Traductions disponibles
Numéro d'article: 304466 - Voir les produits auxquels s'applique cet article
Utilisateur débutant : requiert la connaissance de l'interface utilisateur sur les ordinateurs mono-utilisateur.

Cet article s'applique uniquement aux bases de données Microsoft Access (.mdb ou .accdb).
Cet article explique comment définir des relations dans une base de données Microsoft Access. Il contient les rubriques suivantes :
  • Nature des relations entre les tables
  • Types des relations entre les tables
    • Relations un-à-plusieurs
    • Relations plusieurs-à-plusieurs
    • Relations un-à-un

  • Procédure pour définir des relations entre les tables
    • Procédure pour définir des relations un-à-plusieurs ou un-à-un
    • Procédure pour définir des relations plusieurs-à-plusieurs

  • Intégrité référentielle
  • Mises à jour et suppressions en cascade
  • Types de jointure
Agrandir tout | Réduire tout

Sommaire

Plus d'informations

Nature des relations entre les tables

Dans une base de données relationnelle, les relations permettent d'empêcher les données redondantes. Par exemple, si vous concevez une base de données qui effectuera le suivi d'information sur des manuels, vous pouvez avoir une table nommée Titres qui stocke des informations sur chaque manuel (comme son titre, sa date de publication et son éditeur). Vous pouvez également stocker des informations sur l'éditeur, comme son numéro de téléphone, son adresse et son code postal. Si vous devez stocker toutes ces informations dans la table Titres, le numéro de téléphone de l'éditeur serait en double pour chaque titre publié par l'éditeur.

Une meilleure solution consiste à stocker les informations relatives à l'éditeur une seule fois dans une table distincte intitulée Éditeurs. Vous pouvez ensuite placer dans la table Titres un pointeur qui fait référence à une entrée de la table Éditeurs.

Pour vous assurer que vos données ne sont pas désynchronisées, vous pouvez appliquer l'intégrité référentielle entre les tables Titres et Éditeurs. Les relations d'intégrité référentielle permettent de s'assurer que les informations d'une table correspondant aux informations d'une autre. Par exemple, chaque titre de la table Titres doit être associé à un éditeur spécifique de la table Éditeurs. Il n'est pas possible d'ajouter dans la base de données un titre pour un éditeur qui ne figure pas dans cette base de données.

Types des relations entre les tables

Une relation existe lorsque des données correspondent dans des colonnes clés, généralement des colonnes portant le même nom dans les deux tables. Dans la plupart des cas, la relation correspond à la clé principale d'une table, ce qui fournit un identificateur unique pour chaque ligne, avec une entrée dans la clé étrangère de l'autre table. Par exemple, des ventes peuvent être associées à des titres spécifiques vendus par la création d'une relation entre la colonne title_id de la table Titres (clé primaire) et la colonne title_id de la table Ventes (clé étrangère).

Il existe trois types de relations entre les tables. Le type de relation qui est créée dépend de la façon dont les colonnes associées sont définies.

Relations un-à-plusieurs

Une relation un-à-plusieurs est le type de relation le plus courant. Dans ce type de relation, une ligne de la table A peut comporter de nombreuses lignes correspondantes dans la table B, mais une ligne de la table B peut avoir une seule ligne correspondante de la table A. Par exemple, les tables Éditeurs et Titres ont une relation un-à-plusieurs : chaque éditeur produit beaucoup de titres, mais chaque titre n'a qu'un seul éditeur.

Une relation un-à-plusieurs est créée si une seule des colonnes associées est une clé primaire ou comporte une contrainte unique.

Dans Access, le côté clé primaire d'une relation un-à-plusieurs est désignée par un symbole de clé. Le côté clé étrangère d'une relation un-à-plusieurs est désigné par un symbole infini.

Relations plusieurs-à-plusieurs

Dans une relation plusieurs-à-plusieurs, une ligne de la table A peut comporter de nombreuses lignes correspondantes dans la table B, et inversement. Pour créer une telle relation, vous définissez une troisième table, appelée table de jonction, dont la clé primaire se compose des clés étrangères des tables A et B. Par exemple, les tables Auteurs et Titres ont une relation plusieurs-à-plusieurs qui est définie par une relation un-à-plusieurs entre chacune de ces tables et la table TitreAuteurs. La clé primaire de la table TitreAuteurs est la combinaison de la colonne au_id (clé primaire de la table Auteurs) et de la colonne title_id (clé primaire de la table Titres).

Relations un-à-un

Dans une relation un-à-un, une ligne de la table A ne peut pas avoir plus d'une ligne correspondante dans la table B, et inversement. Une relation un-à-un est créée si les deux colonnes associées sont des clés primaires ou si elles comportent des contraintes uniques.

Ce type de relation n'est pas courant car la plupart des informations associées ainsi seraient toutes dans une table. Vous pouvez utiliser une relation un-a-un pour :
  • diviser une table comportant de nombreuses colonnes ;
  • isoler une partie de table pour des raisons de sécurité ;
  • stocker des données qui sont éphémères et peuvent être facilement supprimées par la simple suppression de la table ;
  • stocker des informations qui concernent uniquement un sous-ensemble de la table principale.
Dans Access, le côté clé primaire d'une relation un-à-un est désignée par un symbole de clé. Le côté clé étrangère est également désigné par un symbole de clé.

Procédure pour définir des relations entre les tables

Lorsque vous créez une relation entre des tables, les champs associés n'ont pas forcément les mêmes noms. Toutefois, les champs associés doivent comporter le même type de données sauf si le champ de clé primaire est de type NuméroAuto. Vous pouvez faire correspondre un champ NuméroAuto avec un champ Numéro uniquement si la propriété TailleChamp des deux champs est identique. Par exemple, vous pouvez faire correspondre un champ NuméroAuto et un champ Numéro si la propriété TailleChamp des deux champs est Entier long. Même lorsque les deux champs correspondants sont de type Numéro, ils doivent avoir la même valeur de propriété TailleChamp.

Procédure pour définir des relations un-à-plusieurs ou un-à-un

Pour créer une relation un-à-plusieurs ou un-a-un, procédez comme suit :
  1. Fermez toutes les tables qui sont ouvertes. Vous ne pouvez pas créer ou modifier des relations entre des tables ouvertes.
  2. Dans Access 2002 ou Access 2003, procédez comme suit :
    1. Appuyez sur F11 pour basculer dans la fenêtre Base de données.
    2. Dans le menu Outils, cliquez sur Relations.
    Dans Access 2007, cliquez sur Relations dans le groupe Afficher/Masquer sous l'onglet Outils de base de données.
  3. Si vous n'avez pas encore défini de relations dans votre base de données, la boîte de dialogue Afficher la table s'affiche automatiquement. Si vous voulez ajouter les tables à mettre en relation alors que la boîte de dialogue Afficher la table n'est pas affichée, sélectionnez Afficher la table dans le menu Relations.
  4. Double-cliquez sur les noms des tables que vous voulez mettre en relation, puis fermez la boîte de dialogue Afficher la table. Pour créer une relation entre une table et elle-même, ajoutez-la deux fois.
  5. Faites glisser le champ que vous voulez mettre en relation dans une table vers le champ associé de l'autre table. Pour faire glisser plusieurs champs, appuyez sur CTRL et cliquez sur chaque champ, puis faites glisser l'ensemble.

    Dans la plupart des cas, vous faites glisser le champ de clé primaire (en gras) d'une table vers un champ similaire (qui porte souvent le même nom) appelé clé étrangère dans l'autre table.
  6. La boîte de dialogue Modifier des relations s'affiche. Assurez-vous que les noms de champ affichés dans les deux colonnes sont corrects. Vous pouvez les modifier si nécessaire.

    Définissez les options de relation si besoin est. Si vous avez besoin d'informations sur un élément spécifique de la boîte de dialogue Modifier les relations, cliquez sur le point d'interrogation, puis sur l'élément. Ces options sont décrites en détail plus loin dans cet article.
  7. Cliquez sur Créer afin de créer la relation.
  8. Répétez les étapes 5 à 8 pour chaque paire de tables que vous voulez mettre en relation.

    Lorsque vous fermez la boîte de dialogue Modifier les relations, Microsoft Access vous invite à enregistrer la disposition. Que vous enregistriez ou non la disposition, les relations que vous créez sont enregistrées dans la base de données.

    REMARQUE : Vous pouvez créer des relations dans des requêtes ainsi que dans des tables. Toutefois, aucune intégrité référentielle n'est mise en ?uvre dans les requêtes.

Procédure pour définir des relations plusieurs-à-plusieurs

Pour créer une relation plusieurs-à-plusieurs, procédez comme suit :
  1. Créez les deux tables qui auront une relation plusieurs-à-plusieurs.
  2. Créez une troisième table, appelée table de jonction, puis ajoutez dans cette table de nouveaux champs avec les mêmes définitions que les champs de clé primaire des deux autres tables. Dans la table de jonction, les champs de clé primaire fonctionnent comme des clés étrangères. Vous pouvez ajouter d'autres champs dans la table de jonction, tout comme vous pouvez ajouter une autre table.
  3. Dans la table de jonction, définissez la clé primaire afin d'inclure les champs de clé primaire des deux autres tables. Par exemple, dans une table de jonction TitleAuthors, la clé primaire peut comporter les champs IDCommande et IDProduit.

    REMARQUE : Pour créer une clé primaire, procédez comme suit :
    1. Ouvrez une table en mode Création.
    2. Sélectionnez le ou les champs que vous voulez définir en tant que clé primaire. Pour sélectionner un champ, cliquez sur le sélecteur de ligne du champ souhaité.

      Pour sélectionner plusieurs champs, appuyez sur la touche CTRL, puis cliquez sur le sélecteur de ligne de chaque champ.
    3. Dans Access 2002 ou Access 2003, cliquez sur Clé primaire dans la barre d'outils.

      Dans Access 2007, cliquez sur Clé primaire dans le groupe Outils sous l'onglet Conception.

      Remarque Si vous souhaitez que l'ordre des champs d'une clé primaire multichamp soit différent de l'ordre de ces mêmes champs dans la table, cliquez sur Index dans la barre d'outils afin d'afficher la boîte de dialogue Index, puis réorganisez les noms de champs pour l'index nommé Clé primaire.
  4. Définissez une relation un-à-plusieurs entre chacune des deux tables primaires et la table de jonction.

Intégrité référentielle

L'intégrité référentielle est un système de règles utilisé par Microsoft Access pour garantir que les relations entre les enregistrements de tables associées sont valides et que vous ne supprimez pas ou ne modifiez pas accidentellement des données associées. Vous pouvez définir une intégrité référentielle lorsque l'ensemble des conditions suivantes sont réunies :
  • Le champ correspondant de la table est une clé primaire ou il comporte un index unique.
  • Les champs associés comportent le même type de données. Il y a deux exceptions. Un champ NuméroAuto peut être mis en relation avec un champ Numéro dont la propriété TailleChamp a pour valeur Entier long, et un champ NuméroAuto dont la propriété TailleChamp a pour valeur ID réplication peut être mis en relation avec un champ Numéro dont la propriété TailleChamp a pour valeur ID réplication.
  • Les deux tables appartiennent à la même base de données Microsoft Access. Si les tables sont liées, elles doivent être au format Microsoft Access et vous devez ouvrir la base de données dans laquelle elles sont stockées afin de définir l'intégrité référentielle. L'intégrité référentielle ne peut pas être mise en ?uvre pour les tables liées à partir de bases de données dans d'autres formats.
Les règles suivantes s'appliquent pour l'utilisation de l'intégrité référentielle :

  • Vous ne pouvez pas entrer une valeur dans le champ de clé primaire d'une table associée qui ne figure pas dans la clé primaire de la table primaire. Toutefois, vous pouvez entrer une valeur indéfinie dans la clé primaire, en indiquant que les enregistrements ne sont pas en relation. Par exemple, une commande ne peut pas être affectée à un client qui n'existe pas mais elle peut être affectée à personne par l'indication d'une valeur indéfinie dans le champ IDClient.
  • Vous ne pouvez pas supprimer un enregistrement d'une table primaire si l'enregistrement correspondant existe dans une table mise en relation. Par exemple, vous ne pouvez pas supprimer un dossier d'employé dans la table Employés si des commandes sont affectées à cet employé dans la Commandes.
  • Vous ne pouvez pas modifier une valeur de clé primaire dans la table primaire si cet enregistrement comporte des enregistrements liés. Par exemple, vous ne pouvez pas modifier supprimer un ID d'employé dans la table Employés si des commandes sont affectées à cet employé dans la table Commandes.

Mises à jour et suppressions en cascade

Pour les relations dans lesquelles une intégrité référentielle est mise en ?uvre, vous pouvez indiquer si vous souhaitez que Microsoft Access procède automatiquement à des mises à jour et à des suppressions en cascade d'enregistrements liés. Si vous définissez ces options, les opérations de suppression et de mise à jour qui seraient normalement empêchées par les règles d'intégrité référentielle sont autorisées. Lorsque vous supprimez des enregistrements ou modifiez des valeurs de clé primaire dans une table primaire, Microsoft Access apporte les modifications nécessaires aux tables liées afin de préserver l'intégrité référentielle.

Si vous activez la case à cocher Mettre à jour en cascade les champs correspondants lors de la définition d'une relation, chaque fois que vous modifiez la clé primaire d'un enregistrement dans la table primaire, Microsoft Access met automatiquement à jour la clé primaire à l'aide de la nouvelle valeur de tous les enregistrements liés. Par exemple, si vous modifiez l'ID d'un client dans la table Clients, le champ IDClient de la table Commandes est automatiquement mis à jour pour toutes les commandes de client de sorte que la relation n'est pas rompue. Microsoft Access effectue les mises à jour en cascade sans afficher de message.

REMARQUE : Si la clé primaire de la table primaire est un champ NuméroAuto, l'activation de la case à cocher Mettre à jour en cascade les champs correspondants n'aura aucun effet car vous ne pouvez pas modifier la valeur du champ NuméroAuto.

Si vous sélectionnez la case à cocher Effacer en cascade les enregistrements correspondants lors de la définition d'une relation, chaque fois que vous supprimez des enregistrements dans la table primaire, Microsoft Access supprime automatiquement les enregistrements liés dans la table associée. Par exemple, si vous supprimez un dossier client dans la table Clients, toutes les commandes de ce client sont automatiquement supprimées dans la table Commandes (ceci inclut les enregistrements de la table Détails commandes liée aux enregistrements Commandes). Lorsque vous supprimez des enregistrements à partir d'un formulaire ou d'une feuille de données alors que la case à cocher Effacer en cascade les enregistrements correspondants est sélectionnée, Microsoft Access vous avertit que les enregistrements liés peuvent également être supprimés. Toutefois, lorsque vous supprimez des enregistrements à l'aide d'une requête de suppression, Microsoft Access supprime automatiquement les enregistrements des tables liées sans afficher d'avertissement.

Types de jointure

Il existe trois types de jointure :

Option 1 définit une jointure interne. Une jointure interne est une jointure dans laquelle les enregistrements des deux tables sont combinés dans les résultats d'une requête uniquement si les valeurs des champs joints répondent à une condition donnée. Dans une requête, la jointure par défaut est une jointure interne qui sélectionne des enregistrements uniquement si les valeurs des champs joints correspondent.

Option 2 définit une jointure externe gauche. Une jointure externe gauche est une jointure dans laquelle tous les enregistrements du côté gauche de l'opération LEFT JOIN dans l'instruction SQL de la requête sont ajoutés aux résultats de la requête, même si aucune valeur correspondante ne figure dans le champ joint de la table située à droite.

Option 3 définit une jointure externe droite. Une jointure externe droite est une jointure dans laquelle tous les enregistrements du côté droit de l'opération RIGHT JOIN dans l'instruction SQL de la requête sont ajoutés aux résultats de la requête, même si aucune valeur correspondante ne figure dans le champ joint de la table située à gauche.

Propriétés

Numéro d'article: 304466 - Dernière mise à jour: mardi 27 novembre 2007 - Version: 5.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002
Mots-clés : 
kbhowto kbdatabase kbdesign KB304466
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com