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 :

Relation entre deux tables [Entité-Association]


Sujet :

Schéma

  1. #1
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Relation entre deux tables
    Bonjour,

    Je suis actuellement en train de modéliser une base de données et je bloque sur un soucis de modélisation tout bête.
    J'ai deux tables : une de code_cim10 (c'est un thésaurus, une sorte de dictionnaire) et une table RSA qui contient un DP (qui est un code cim10) et un DR (qui en est un autre). Ainsi, dans ma table RSA j'ai deux codes CIM10 stockés dans deux attributs différents. Je souhaiterais établir une relation entre ces deux tables sachant que code_cim10 est une clé primaire de ma table thésaurus. Je vous transmets un petit schéma pour que ce soit visuel.

    Nom : code_cim10_jointure.png
Affichages : 628
Taille : 20,6 Ko

    Ma question est la suivante : dois-je créer une table intermédiaire pour modéliser la relation (comme pour les relations 1:n/1:n) ?
    Merci d'avance.

    Steffie

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    A supposer que pour une instance de THS on ait de 1 à N instances de RSA (vous n’avez rien précisé à ce propos), une représentation peut être la suivante :


    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Merci de la réponse rapide.
    En fait, au niveau des cardinalités, ça serait l'inverse : à 1 code cim10 correspond 1 ou plusieurs DP et un ou plusieurs DR et à un DP ou un DR ne correspond qu'un seul et unique code cim10.
    Ainsi, puis-je reprendre votre modélisation en inversant les cardinalités ?

    Puis, pour traduire ce schéma en MPD, on mettrait donc une seule fois le codeCim10_ID dans la table RSA ? Comment traduire la double relation (les deux traits) ?

    Merci d'avance

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    au niveau des cardinalités, ça serait l'inverse : à 1 code cim10 correspond 1 ou plusieurs DP et un ou plusieurs DR et à un DP ou un DR ne correspond qu'un seul et unique code cim10.
    Dans un MCD Merise les cardinalités sont à l'inverse de celles qu'on a dans un diagramme du style MySQL Workbench, tel que celui que j’ai utilisé. Etant donné que vous parlez de tables et faites figurer dans la table RSA des attributs faisant référence à la clé (identifiant dans le cas de Merise) de la table THS, on a quitté le niveau MCD.

    Si vous voulez un MCD, on y représente les choses ainsi :




    Ce qui se lit :

    Chaque instance de THS participe au moins une fois à l’association DP et chaque instance de RSA participe une et ne seule fois à l’association DP.

    Chaque instance de THS participe au moins une fois à l’association DR et chaque instance de RSA participe une et ne seule fois à l’association DR.

    Ce qui est revient sémantiquement à ce que qui est modélisé avec MySQL Workbench.

    Pour ce que vous appelez MPD, le diagramme MySQL Workbench convient.

    pour traduire ce schéma en MPD, on mettrait donc une seule fois le codeCim10_ID dans la table RSA ?
    Non. Il faut une fois pour DP et ne fois pour DR (cf. le diagramme MySQL Workbench).
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Ok, je comprends mieux. Je ne savais pas qu'il était possible de faire une double relation comme cela à part pour les relations réflexives.
    Du coup, quand je voudrais requêter mes tables avec une jointure, je suppose qu'il faudra que je fasse une clause :

    " ... FROM CIM10 INNER JOIN RSA ON CIM10.IdCIM10=RSA.DP AND CIM10.IdCIM10=RSA.DR WHERE ..."

    Cette façon de requêter est-elle correcte ou Est-ce que je me complique trop la vie ?

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Hum... En fait, vous imposez la règle suivante :

    Pour être sélectionnée une ligne appartenant à la table RSA doit vérifier la condition DP = DR : vous ne récupérerez donc que les lignes pour lesquelles DP = DR.

    Ceci est un peu (beaucoup) restrictif...

    Si vous voulez récupérer les lignes de la table RSA pour lesquelles CIM10.IdCIM10 = RSA.DP et CIM10.IdCIM10=RSA.DR, alors il faut faire comme si vous aiez deux tables RSA, une pour les DP et l’autre pour les DR :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM CIM10 INNER JOIN RSA AS RSA1 ON CIM10.IdCIM10= RSA1.DP
               INNER JOIN RSA AS RSA2 ON CIM10.IdCIM10= RSA2.DR
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Effectivement, je vois mon erreur dans la requête, merci beaucoup de l'aide

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

Discussions similaires

  1. [DEBUTANT]Problème de relation entre deux tables
    Par Yomane dans le forum Schéma
    Réponses: 2
    Dernier message: 20/10/2006, 01h30
  2. relation entre deux tables
    Par tojiji dans le forum Access
    Réponses: 6
    Dernier message: 04/07/2006, 14h44
  3. 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
  4. [XSD] Relation entre deux tables
    Par fd59 dans le forum Valider
    Réponses: 2
    Dernier message: 09/09/2005, 23h33
  5. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54

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