IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

les relations entre deux tables Access


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut les relations entre deux tables Access
    Bonjour à tous et toutes

    Après avoir longtemps délaisser Access au profit de SQL Server, me revoilà à essayer de monter une base de données Access.
    Sur SQL Server, je travaillais sur des tables deja existantes.C'était plus simple
    Et là, sur cette future base de données, je me heurte a quelque chose de simple mais qui me me fait tourner en bourrique : les relations entre deux tables
    Je sais que la relation doit se faire entre la clef primaire d'une table et la clef etrangère d'une autre table.

    Pour simplifier les choses, disons que j'ai deux tables très simples: l'une intitulé T_Agent , la deuxième T_Banque .

    Dans la table T_Agent, j'insère 6 champs :
    1) la clef primaire en NumAuto intitulé N°Agent ( je ne peux pas prendre le champ nom et prenom en clef primaire car deux agents peuvent avoir le même nom et prenom)
    2) un champ texte intitulé nom
    3) un champ texte intitulé prenom
    4) un champ calculé qui reprend Nom+ Prenom
    5) Un champ texte intitulé adresse
    6) Un champ texte intutulé telephone

    Dans la table T_Banque, j'insère 2 champs:
    1) la clef primaire en NumAuto intitulé N°Banque
    2) un champ texte intitulé NomBanque

    Je me suis posé la question suivante: Comment relier ces deux tables?
    Ces deux tables n'ont pas de champ en commun.

    Mon premier reflex était d'insèrer dans la table T_Banque, le champ N°Agent qui reprend le numero des agents de la table T_Agent. Ce champ deviendrait alors, la clef etrangère du champ N°Agent de la table T_Agent.
    Le soucis est que j'ai des centaines de nom dans la table T_Agent. Et je me voie mal insérer, dans la table T_Banque, une à une les numéros correspond à chaque agent avec le risque de me tromper dans l attribution des numéros.

    Mon deuxième reflex a été celui d'inserer dans la table T_Banque, un champ intitulé NomComplet avec comme type de données "Assistant Liste de Choix". Ce champ viendrait recuperer les données du champ Nom+Prenom de la table T_Agent.
    Mais je me retrouve coincé car je ne peux pas faire de relation avec un champ calculé (champ Nom+Prenom de la table T_Agent avec le champ NomPrenom de la table T_Banque).
    Et quand bien même, je le pourrai, ce ne serait plus une relation entre une clef primaire et une clef étrangère.
    Voilà mon problème.

    Quelqu'un pourrais ma'ider ou m'aiguiller..

  2. #2
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,
    déjà tu peux virer ton champ calculé dans la table T_agent, il est inutile (redondance de l'information)

    Ensuite, il faudrait savoir si un agent appartient à une seule banque, ou si une banque à un seul agent, ou, si une banque peut avoir plusieurs agent et vice-versa.

    Dans le premier cas il faudra créer un champ num_banque dans la table T_agent
    Dans le second, il faudra créer un champ num_agent dans la table T_banque
    Dans le dernier, il faudra créer une table intermédiaire.

    Mais pas d'inquiétude pour la saisie dans la table, les formulaires et les listes seront là (tu choisiras le nom/prénom de l'agent et/ou celui de la banque).

    A+

  3. #3
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Bonjour HDU
    Effectivement, une banque peut avoir plusieurs agents et un agent peut avoir plusieurs banques...grrr
    Pourrait on revenir plustard ce cas de figure.

    Dans un premier temps, faisons le plus simple
    Imaginons qu un agent a une seule banque et une banque a plusieurs agents. On sera dans une relation un a plusieurs.
    Donc dans ce cas de figure, je dois insérer un numAgent dans la table T_Banque c'est cela ?

  4. #4
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par facteur Voir le message
    Bonjour HDU
    Effectivement, une banque peut avoir plusieurs agents et un agent peut avoir plusieurs banques...grrr
    Pourrait on revenir plustard ce cas de figure.

    Dans un premier temps, faisons le plus simple
    Imaginons qu un agent a une seule banque et une banque a plusieurs agents. On sera dans une relation un a plusieurs.
    Donc dans ce cas de figure, je dois insérer un numAgent dans la table T_Banque c'est cela ?
    Si une banque peut avoir plusieurs agents et un agent plusieurs banques, il faut le modéliser de suite, une fois que tes tables et relations construites, il sera trop tard pour revenir en arrière...

    Donc, une table BanqueAgent(#(num_banque, num_agent)) fera l'affaire.

    Si tu avais comme dans ton cas de figure une seule banque par agent, le champ numAgent dans la table Banque aurait en effet suffit...

    A+

  5. #5
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 240
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 240
    Points : 213
    Points
    213
    Par défaut
    Si une banque peut avoir plusieurs agents et un agent plusieurs banques, il faut le modéliser de suite, une fois que tes tables et relations construites, il sera trop tard pour revenir en arrière...
    Tu as raison.

    Donc si je comprend bien cette table sera donc en plus des deux tables T_Agent et T_banque ??

  6. #6
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Tout à fait.
    Le champ N°Agent de la table t_agent en relation avec le champ numagent de la table BanqueAgent
    Le champ N°Banque de la table t_banque en relation avec le champ numbanque de la table BanqueAgent

    A+

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 763
    Points : 58 020
    Points
    58 020
    Billets dans le blog
    42
    Par défaut
    Bonjour,

    Bienvenue dans la modélisation des BDD (qui n'a à peu près rien à faire avec les problèmes de listes déroulantes ou autre widget du domaine des IHM, ici on se préoccupe des données).

    Si on se fie aux règles de gestion suivantes :
    - un agent est employé par une banque (et une seule) ;
    - une banque peut employer un ou plusieurs agents,

    le passage aux tables donnera :
    Agent(idAgent, nomAgent, prenomAgent, ..., #idBanque)
    avec une clé étrangère idBanque qui référence la clé primaire de la table Banque.

Discussions similaires

  1. Access: double relation entre deux tables
    Par Michael_Access dans le forum Modélisation
    Réponses: 2
    Dernier message: 29/01/2015, 16h34
  2. Problème de relation entre deux tables + autre chose
    Par Goth_sensei dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/03/2006, 20h49
  3. [XSD] Relation entre deux tables
    Par fd59 dans le forum Valider
    Réponses: 2
    Dernier message: 09/09/2005, 23h33
  4. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo