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

Modélisation Discussion :

Petite enigme [access]


Sujet :

Modélisation

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Petite enigme [access]
    2 table

    fille [nom, centres_interet]
    garcon [nom, centres_interet]

    comment réaliser une 3eme table

    association[nom fille, nom garçon]

    tout en respectant la condition : il faut qu'il est le même centre d'interet

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par cidmcflow Voir le message
    fille [nom, centres_interet]
    garcon [nom, centres_interet]
    association[centres_interet, nom fille, nom garçon]
    et mettre une relation avec intégrité référentielle entre

    association et garcon sur nom_garcon, centre_interet
    association et fille sur nom_fille, centre_interet.

    Je te suggère aussi ne pas faire 2 tables : garcon et fille mais une seule table personne avec un champ sexe. Ca te simplifiera la vie quand tu voudra sortir des listes de personnes.

    Avec 2 tables il te faudra 2 listes séparées ou jouer avec la source de ta liste. Avec une seule table tu as simplement à filtrer ceux que tu veux voir. N'est-ce pas plus simple ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    justement je n'arrive pas à mettre une relation avec intégrité référentielle sous access. access me met qu'il y a une erreur d'index.

    C'est vrai qu'une table est plus simple pour les personne, cependant je ne comprend pas très bien l'histoire du filtrage. je fais cela grâce à une requête ?
    Il n'y a donc pas un moyen simple de réglé ce petit problème tout bête (PS : je me casse la tête dessus depuis une heure)

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si tu permets un autre conseil n'utilise pas le nom comme clef primaire d'une table car il existe des homnymes, un numAuto est bien meilleur.

    Dans ta structure actuelle, il faut que tu définisses un index unique sur Nom+CentreInteret pour tes deux tables garçon et fille.

    Ensuite il faut que tu définisses un index unique sur ta table à 3 champs composé des trois champs, surtout pour être sur que tu n'associes pas 2 fois les même personnes pour le même centre d'intérêt.

    Personnelement voilà comment je monterai ma BD.

    Table Personne
    ClefPersonne (numAuto)
    Sexe
    Nom
    Autres renseignements utiles.

    Table Interet
    ClefInteret (numAuto)
    Libelle
    Autres renseignements utiles.

    Table InteretPersonne
    ClefPersonne (long)
    ClefInteret (long)

    Clef primaire = ClefPersonne+ClefInteret, car une personne peut avoir plusieurs centre d'intérêt, non ?

    Table InteretEnCommun
    ClefInteret (Long)
    ClefPersonne1 (long)
    ClefPersonne2 (long)

    ClefPrimaire = ClefInteret+ClefPersonne1+ClefPersonne2, car 2 personnes peuvent avoir plusieurs centres d'intérêts en commun, n'est-ce pas ?

    Est-il absolument indispensable que les deux personnes soient de sexe différents ? Si oui, ce modèle là ne permet pas de le garantir par modélisation mais tu peux le gérer par programme.

    Tu noteras aussi que le modèle ne garantie pas que tu n'associes Personne A et B puis Personne B et A, ni A avec A et B avec B. Ceci est aussi à faire par programme.

    Quand tu es dans la fenêtre des relations, le truc consiste à ajouter 2 fois la table Personne.

    Puis de faire une relation

    entre InteretPersonne<->InteretEnCommun sur ClefInteret+ClefPersonne et

    entre InteretPersonne_1<->InteretEnCommun sur ClefInteret+ClefPersonne_1.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par cidmcflow Voir le message
    C'est vrai qu'une table est plus simple pour les personne, cependant je ne comprend pas très bien l'histoire du filtrage. je fais cela grâce à une requête ?
    Oui, au moment où tu en as besoin, tu affiches tous les enr qui sont de sexe féminin par exemple. Quand tu ouvres un formulaires tu peux aussi demander à Access de n'afficher que certains enregistrements. Cela t'obliges à gérer seulement des sélections dans ta liste et pas des données réparties entre 2 tables.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci, je vais regarder cela, en effet cela ne marche pas également si on impose comme contrainte que chaque personne ne peut avoir qu'un seul centre d'interet.
    je vais plutot regarder cela du coté des formulaires et non dans la conception de mes tables.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si tu ne veux qu'un seul centre d'intéret, il suffit de mettre ta clef primaire sur l'identifiant de la personne alors tu ne pourras créer qu'un seul centre d'intérêt par personne. Tu peux aussi intégrer la clef Centre d'intérêt à la table des personnes comme cela une personne = un centre.

    Il est important de bien concevoir son modèle de tables car le contrôle par la programmation repose sur le talent du programmeur.

    Si tu as un modèle de table bien monté tu améliore grandement les qualité d'intégrité des données dans ta base. Par exemple, même si la personne n'utilise pas les forms, la bd s'assure que si tu entre A dans une table il faut que ce A existe dans une table de référence et te préviens si tu essayes de supprimer ce A de référence et qu'il est utilisé dans une autre table.

    Si tu te reposes uniquement sur la programmation alors tu risques que quelqu'un oublie les règles d'intégrités et 'bousille' tes données tu vas te retrouver avec des A sans références et des machins qui flottes sans que tu puisses les ratcaher à quoi que ce soit.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour tout ces renseignement, en effet j'opte plutôt pour une bonne conception de mes tables et de mes relations.

    Si on met le champ "nom" en clé primaire (et pas celui de "interet") on ne peut pas faire une intégrité referentielle entre les table homme ou femme et la table assosiaction.

    Mais j'ai trouvé la solution. Je met bien les 2 en clé primaire pour me permettre de faire une relation. Mais j'utilise les indexs des table homme et femme pour spécifier que le champ "nom" doit être unique. Ainsi aucun doublons sur le champ nom n'est possible -> donc un seul interet par personne

    Merci a+

  9. #9
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Points
    25 358
    Par défaut
    Citation Envoyé par cidmcflow Voir le message
    Mais j'ai trouvé la solution.
    Et le tag ?
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle base pour les petites applications? Access équivalent?
    Par Gdal dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/10/2009, 10h31
  2. Petite Enigme Eclipse vs RSA
    Par Didom dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 24/06/2008, 16h31
  3. Clé primaire : petite question (Access 2002)
    Par azertix dans le forum VBA Access
    Réponses: 30
    Dernier message: 23/06/2008, 14h06
  4. 2 petits problemes access
    Par clemus83 dans le forum IHM
    Réponses: 2
    Dernier message: 09/06/2008, 09h28
  5. petite enigme sympa
    Par BrItneY dans le forum Enigmes
    Réponses: 18
    Dernier message: 04/08/2006, 18h37

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