• Aucun résultat trouvé

VIII RELATIONS DANS UNE BASE DE DONNEES ACCESS

Après avoir défini plusieurs tables pour les différents sujets traités dans votre base de données Access, il vous faut un moyen d'indiquer à Access comment rassembler à nouveau ces informations. La première étape consiste à définir des

relations entre vos différentes tables. Après quoi vous pouvez créer des requêtes, des formulaires et des états pour afficher des données provenant de plusieurs tables différentes. Par exemple, le formulaire ci- contre comprend des informations

provenant de quatre tables différentes.

A

A..

FF

ONONCCTTIIOONNNNEEMMEENNTT DDEESS R

REELLAATTIIOONNSS

Dans l'exemple précédent, les champs de quatre tables doivent être coordonnés de manière à présenter les informations dans le même ordre. Cette coordination est obtenue au moyen de relations entre les tables. Une relation a pour principe la correspondance des données des champs clés de deux tables — ces champs ont

généralement le même nom dans les deux tables. Dans la plupart des cas, ces champs sont la clé primaire de l'une des tables, qui fournit un identificateur unique pour chaque enregistrement, et une clé étrangère dans l'autre table. Par exemple, il est possible d'associer les employés avec les commandes dont ils ont la charge en créant une relation entre la table Employés et la table Commandes à l'aide des champs RéfEmployé (Voir Illustration ci-dessus).

B

B.. RR

ELELAATTIIOONN UUNN

--

AA

--

PLPLUUSSIIEEUURRSS

La relation un-à-plusieurs est la plus courante. Dans ce type de relation, un enregistrement de la table A peut être mis en correspondance avec plusieurs enregistrements de la table B, alors qu'à chaque enregistrement de la table B ne correspond qu'à un enregistrement de la table A.

Dans l’exemple de l’illustration ci- contre, nous avons deux tables : Fournisseurs & Produits. Un fournisseur peut fournir un ou plusieurs produits alors qu’un produit ne peut être fourni (dans cet exemple précis) que par un seul fournisseur.

C

C.. RR

ELELAATTIIOONN PPLLUUSSIIEEUURRSS AA PPLLUUSSIIEEUURRSS

Dans une relation plusieurs-à-plusieurs, un enregistrement de la table A peut être mis en correspondance avec plusieurs enregistrements de la table B, et inversement, un enregistrement de la table B peut être mis en correspondance avec plusieurs

enregistrements de la table A. Ce type de relation n'est possible qu'après définition d'une troisième table (appelée table de jonction), dont la clé primaire est constituée de deux champs — les clés étrangères des tables A et B. Une relation plusieurs-à-plusieurs n'est en fait rien d'autre que deux relations un-à-plusieurs avec une troisième table.

Par exemple, la table Commandes et la table Produits ont une relation plusieurs-à- plusieurs définie en créant deux relations un-à- plusieurs avec la table Détails commandes. Une commande peut porter sur plusieurs produits et chaque produit peut apparaître dans plusieurs commandes (Voir Illustration

ci-contre). Remarque

Clé étrangère : Un ou plusieurs champs de table (colonnes) qui font référence au(x) champ(s) de clé primaire d'une autre table. Une clé étrangère indique comment les tables sont liées.

D

D.. RR

ELELAATTIIOONN UUNN

--

AA

--

UNUN

Dans une relation un-à-un, chaque enregistrement de la table A ne peut correspondre qu'à un enregistrement de la table B, et inversement, chaque

enregistrement de la table B ne peut correspondre qu'à un enregistrement de la table A. Ce type de relation est peu courant, car la plupart des informations qui seraient associées de la sorte font normalement partie d'une même table. Vous pouvez utiliser une relation un-à-un pour diviser une table qui a de nombreux 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.

Par exemple, vous pouvez créer une table pour recenser les employés

participant à un jeu de football organisé pour une collecte des fonds. Chaque joueur de la table Joueurs de football correspond à un seul enregistrement de la table Employés.

E

E.. DD

EFEFIINNIITTIIOONN DDEESS RREELLAATTIIOONNSS

Le type de relation créé par Access dépend de la manière dont les champs liés sont définis : U Unneerreellaattiioonnuunn--àà--pplluussiieeuurrs seessttccrrééééeessiiuunnsseeuullddeesscchhaammppsslliiéésseessttuunneecclléé p prriimmaaiirreeoouuààuunniinnddeexxuunniiqquuee.. U Unneerreellaattiioonnuunn--àà--uun neessttccrrééééeessiilleessddeeuuxxcchhaammppsslliiééssssoonnttddeesscclléésspprriimmaaiirreessoouu o onnttddeessiinnddeexxuunniiqquueess.. U Unneerreellaattiioonnpplluussiieeuurrss--àà--pplluussiieeuurrs seesstteennffaaiittccoommppoossééeeddeeddeeuuxxrreellaattiioonnssuunn--àà-- p plluussiieeuurrss,,aavveeccuunneettrrooiissiièèmmeettaabblleeddoonnttllaacclléépprriimmaaiirreeccoonnssiisstteeeennddeeuuxxcchhaammppss,, q quuiissoonnttlleessccllééssééttrraannggèèrreessddeessddeeuuxxaauuttrreessttaabblleess..

Vous pouvez également créer une relation entre la table et elle-même. Ce type de relation est souvent utilisé lorsque vous devez effectuer une recherche au sein de la même table. Par exemple, dans la table Employés, vous pouvez définir une relation entre les champs RéfEmployé et RapporteÀ, de façon à ce que le champ RapporteÀ puisse afficher des informations sur la RéfEmployé correspondante.

F

F.. II

NTNTEEGGRRIITTEE RREEFFEERREENNTTIIEELLLLEE

L'intégrité référentielle est un système de règles que Access utilise pour garantir que les relations entre les enregistrements dans les tables liées sont valides et que vous ne supprimez pas ou ne modifiez pas accidentellement des données liées. Vous pouvez mettre en œuvre l'intégrité référentielle si toutes les conditions suivantes sont réunies :

L Leecchhaammppccoorrrreessppoonnddaannttddeellaattaabblleepprriimmaaiirreeeessttuunneecclléépprriimmaaiirreeoouuaauunniinnddeexx u unniiqquuee.. L Leesscchhaammppsslliiééssoonnttlleemmêêmmeettyyppeeddeeddoonnnnééeess..IIllyyaaddeeuuxxeexxcceeppttiioonnss..UUnncchhaammpp N NuumméérrooAAuutto oppeeuuttêêttrreelliiééààuunncchhaammppNNuumméérriiqquue eddoonnttllaapprroopprriiééttééTTaaiilllleeCChhaammp p e essttddééffiinniieeààEEnnttiieerrlloonng,g, eettuunncchhaammppNNuumméérrooAAuutto oddoonnttllaapprroopprriiééttééTTaaiilllleeCChhaammp p e essttddééffiinniieeaavveeccNN°°ddeerréépplliiccaattiioon nppeeuuttêêttrreelliiééààuunncchhaammppNNuumméérriiqquueeddoonnttllaa p prroopprriiééttééTTaaiilllleeCChhaammp peessttddééffiinniieeààNN°°ddeerréépplliiccaattiioon.n. L LeessddeeuuxxttaabblleessaappppaarrttiieennnneennttààllaammêêmmeebbaasseeddeeddoonnnnééeessAAcccceessss.. SSiilleessttaabblleess s soonnttddeessttaabblleesslliiééeess,,eelllleessddooiivveennttêêttrreeddééffiinniieessaauuffoorrmmaattAAcccceesss,s, eettvvoouussddeevveezz o ouuvvrriirrllaabbaasseeddeeddoonnnnééeessddaannssllaaqquueelllleeeelllleessssoonnttssttoocckkééeessppoouurraaccttiivveerrll''iinnttééggrriittéé r rééfféérreennttiieellllee.. LL''iinnttééggrriittéérrééfféérreennttiieelllleenneess''aapppplliiqquueeppaassààddeessttaabblleesslliiééeesspprroovveennaanntt d deebbaasseessddeeddoonnnnééeessuuttiilliissaannttdd''aauuttrreessffoorrmmaattss..

Les règles suivantes s'appliquent quand vous utilisez l'intégrité référentielle : D Daannsslleecchhaammppccllééééttrraannggèèrreevvoouussnneeppoouuvveezzppaasseennttrreerruunneevvaalleeuurrqquuiinn''eexxiisstteeppaass d daannssllaacclléépprriimmaaiirreeddeellaattaabblleepprriimmaaiirree..TToouutteeffooiiss,,vvoouussppoouuvveezzeennttrreerruunneevvaalleeuurr N Nuulll lddaannssllaaccllééééttrraannggèèrreeppoouurriinnddiiqquueerrqquueelleesseennrreeggiissttrreemmeennttssnneessoonnttppaasslliiééss.. P Paarreexxeemmppllee,,uunneeccoommmmaannddeenneeppeeuuttppaassêêttrreeaattttrriibbuuééeeààuunncclliieenntt qquuiinn''eexxiissttee p paass,,mmaaiisseelllleeppeeuuttnn''êêttrreeaaffffeeccttééeeààppeerrssoonnnneeeenneennttrraannttuunneevvaalleeuurrddeettyyppeeNNuulll l d daannsslleecchhaammppCCooddeecclliieennt.t. V Voouussnneeppoouuvveezzppaasseeffffaacceerruunneennrreeggiissttrreemmeennttddeellaattaabblleepprriimmaaiirreessiiddeess e ennrreeggiissttrreemmeennttssccoorrrreessppoonnddaannttsseexxiisstteenntt ddaannssuunneettaabblleelliiééee..PPaarreexxeemmppllee,,vvoouussnnee p poouuvveezzppaasseeffffaacceerrll''eennrreeggiissttrreemmeennttdd''uunneemmppllooyyé éddaannssllaattaabblleeEEmmppllooyyéés sss''iillyyaa d deessccoommmmaannddeessaaffffeeccttééeessààcceelluuii--cciiddaannssllaattaabblleeCCoommmmaannddees.s. V Voouussnneeppoouuvveezzppaassmmooddiiffiieerruunneevvaalleeuurrcclléépprriimmaaiirre eddaannssllaattaabblleepprriimmaaiirreessiicceett e ennrreeggiissttrreemmeennttaaddeesseennrreeggiissttrreemmeennttsslliiééss..PPaarreexxeemmppllee,,vvoouussnneeppoouuvveezzppaass

m mooddiiffiieerr lleeNN°°dd''uunneemmppllooyyééddaannssllaattaabblleeEEmmppllooyyéés sssiiddeessccoommmmaannddees slluuiissoonntt a affffeeccttééeessddaannssllaattaabblleeCCoommmmaannddeess..

G

G.. MM

IISSEESS AA JJOOUURR EETT SSUUPPPPRREESSSSIIOONNSS EENN CCAASSCCAADDEE

Lorsque vous appliquez l'intégrité référentielle à une relation, vous pouvez spécifier si vous voulez que Access mette à jour en cascade et supprime en cascade automatiquement des enregistrements liés. Si vous activez ces options, les opérations de suppression et de mise à jour qui normalement ne sont pas permises par les règles

d'intégrité référentielle sont alors autorisées. Quand vous supprimez des enregistrements ou que vous modifiez des valeurs de clé primaire dans une table primaire, Access

effectue les modifications nécessaires dans les tables liées afin de maintenir l'intégrité référentielle.

Si vous activez la case à cocher Mettre à jour en cascade les champs

correspondants quand vous définissez une relation, chaque fois que vous modifiez la clé primaire de l'enregistrement d'une table primaire, Access met automatiquement à jour la clé primaire avec la nouvelle valeur dans tous les enregistrements liés. Par exemple, si vous changez un Code client dans la table Clients, le champ Code client est

automatiquement mis à jour pour chacune des commandes de ce client, afin que la relation ne soit pas rompue. Access effectue la mise à jour en cascade sans afficher de message.

Si vous activez la case à cocher Effacer en cascade les enregistrements correspondants lorsque vous définissez une relation, Access supprime

automatiquement les enregistrements correspondants dans la table liée à chaque fois que vous supprimez un enregistrement de la table primaire. Par exemple, si vous effacez l'enregistrement d'un client de la table Clients, toutes les commandes de ce client sont automatiquement supprimées de la table Commandes (y compris les enregistrements de la table Détails commandes liés aux enregistrements de Commandes). Lorsque vous supprimez des enregistrements d'un formulaire ou d'une feuille de données alors que la case à cocher Effacer en cascade les enregistrements correspondants est activée, Access vous avertit que des enregistrements correspondants peuvent aussi d'être supprimés. Par contre, si vous supprimez des enregistrements à l'aide d'une requête Suppression, Access supprime automatiquement les enregistrements dans les tables liées sans afficher de message.

Remarque

Si la clé primaire dans la table primaire est un champ 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.

Documents relatifs