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

Schéma Discussion :

MCD Table avec deux clefs etrangere identique


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 24
    Points : 28
    Points
    28
    Par défaut MCD Table avec deux clefs etrangere identique
    Bonjour , je bloque sur un problème que je pense pas si dur que ça mais bon...
    J'ai deux entités :
    membre (int id , text pseudo ...)
    message (int id, text sujet , text description , date date_creation)

    Et je voudrais que les membres puissent s'envoyer des messages mais du coup ça me fait deux clefs étrangères identiques et je peut pas distinguer l’expéditeur , du receveur..
    Si vous avez une idée...

    Merci !

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 131
    Points : 38 546
    Points
    38 546
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Le problème tel que vous l'exposez se poserait si vous vouliez par exemple modéliser un parrainage
    MEMBRE 0,n --- Parrainer --- 1,1 MEMBRE

    Auquel cas on a une relation réflexive qui requiert de renommer au moins l'une des deux FK dans la table issue de la relation
    On pourrait par exemple avoir les tables
    MEMBRE (id_membre, nom, courriel)
    PARRAINER (id_membre_parrain#, id_membre_filleul#, date_parrainage)
    Dans la table PARRAINER, il faut en outre des contraintes
    - une conrainte check : id_membre_parrain<> id_membre_filleul
    - 2 contraintes reference : PARRAINER.id_membre_parrain= MEMBRE.id_membre et PARRAINER.id_membre_filleul= MEMBRE.id_membre

    Dans votre cas, c'est beaucoup plus simple, car le message n'est pas une relation, mais une entité-type
    Votre modèle devrait donc être le suivant :

    MEMBRE 0,n --- Emettre --- 1,1 MESSAGE
    MEMBRE 0,n --- Recevoir ---1,n MESSAGE
    et du coup vous aurez des tables comme suit
    MEMBRE (id_membre, nom, courriel)
    MESSAGE(id_message, id_membre#, date_emission)
    RECEVOIR(id_message#, id_membre#, date_reception)
    Dans MESSAGE l'id_membre est celui de l'émetteur
    Dans RECEVOIR, c'est celui du récepteur
    La relation EMETTRE ne devient pas une table, car la cardinalité est 1 coté message

Discussions similaires

  1. Select sur 2 tables avec deux colonnes identiques
    Par LsMarx dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/08/2012, 16h08
  2. Regroupement de deux tables avec juste les valeurs identiques
    Par ange_dragon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2007, 15h42
  3. MAJ d'une table avec deux liens
    Par alaingui dans le forum Access
    Réponses: 3
    Dernier message: 16/01/2007, 16h19
  4. Réponses: 1
    Dernier message: 30/12/2005, 18h40
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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