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 :

Association Many To Many [Modèle Relationnel]


Sujet :

Schéma

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    992
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 992
    Points : 217
    Points
    217
    Par défaut Association Many To Many
    Bonjour,
    je voulais vous demander pourquoi dans un modèle E_R
    on crée une table intermédiaire portant les 2 clés primaux
    des tables impliqué dans cette relations ?

    Et c'est quoi son rôle dans les requetes de séléctions par la suite.

    MErci pour votre aide.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    je voulais vous demander pourquoi dans un modèle E_R
    on crée une table intermédiaire portant les 2 clés primaires
    des tables impliquées dans cette relation ?
    Prenons un exemple...

    Une entreprise de BTP gère ses chantiers et les ouvriers qui sont affectés aux chantiers.

    Règles de gestion :
    Un ouvrier peut travailler sur un à plusieurs chantiers.
    Un chantier peut faire travailler un à plusieurs ouvriers.

    MCD :
    Ouvrier -0,n----Travailler----0,n- Chantier

    Tables :
    Ouvriers(O_Id, O_Nom, ...)
    Chantiers(C_Id, C_Nom, ...)

    Si je mets en clé étrangère dans la table Ouvriers l'identifiant du chantier, l'ouvrier ne peut travailler que sur un seul chantier.

    Si je mets en clé étrangère dans la table Chantiers l'identifiant de l'ouvrier, le chantier ne peut faire travailler qu'un seul ouvrier.

    Dans les deux cas, les règles de gestion ne sont pas respectées. La seule solution, quand on a des cardinalités maximales à n de chaque côté de l'association dans le MCD, c'est de faire une table associative dont la clé primaire sera composée des clés primaires des tables impliquées dans l'association :
    Travailler(T_IdOuvrier, T_IdChantier, ...)

    Et c'est quoi son rôle dans les requêtes de sélections par la suite.
    Si on veut trouver tous les ouvriers ayant travaillé pour le chantier "Construction du siège social de Developpez.com", on est obligé de passer par la table associative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT o.O_Nom
    FROM Ouvriers o
    INNER JOIN Travailler t ON o.O_Id = t.T_IdOuvrier
      INNER JOIN Chantiers c ON t.T_IdChantier = c.C_Id
    WHERE c.C_Nom = 'Construction du siège social de Developpez.com'
    ORDER BY o.O_Nom
    Si on veut connaître le nom de tous les chantiers sur lequel à travaillé l'ouvrier "Duchmol", on passe par la table associative de la même manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT c.C_Nom
    FROM Chantiers c
    INNER JOIN Travailler t ON c.C_Id = t.T_IdChantier
      INNER JOIN Ouvriers o ON t.T_IdOuvrier = o.O_Id
    WHERE o.O_Nom = 'Duchmol'
    ORDER BY c.C_Nom

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

Discussions similaires

  1. Classe d'association, scaffolding et Many to many
    Par flotho dans le forum Grails
    Réponses: 0
    Dernier message: 09/02/2012, 18h56
  2. Réponses: 1
    Dernier message: 07/06/2007, 16h18
  3. requete hql sur association one to many avec inner class
    Par austin P. dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/06/2007, 11h56
  4. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  5. Realation many-to-many + attributs d'association
    Par n!co dans le forum Hibernate
    Réponses: 10
    Dernier message: 27/10/2006, 18h04

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