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

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2004
    Messages : 3 587
    Points : 1 290
    Points
    1 290
    Par défaut Questions par rapport à une relation entre deux table + table supplémntaire
    Salut tout le monde,

    Je suis occupé à documenter la structure d'une base de données, mais je pense rencontrer une relation à trois tables, et je ne sais pas comment retranscrire cette situation dans ma documentation :

    La situation :

    Un pharmacien doit nous indiquer s'il a déjà formé des étudiants d'autres universités que la nôtre.

    - La table université qui reprend toutes les universités en Europe
    - La table pharmacien reprend les informations du pharmacien dont un champ ref_agree_autr_unif qui indique une université avec laquelle il a déjà travaillé avant nous.
    - La table agree_autr_universite qui contient l'id qui est jointe dans la table pharmacien et qui nous indique quelle université (il peut en avoir qu'une seule) et le nombre d'étudiants formés (de 1 à n).

    universite
    ---------
    id
    ---
    nom

    exemple :

    1 UCL
    2 Université de Paris
    3 Université de Lille

    pharmacien
    ---------------
    id
    ---
    nom
    prenom
    ref_agree_autre_unif (clé étrangère)
    ...

    Exemple :

    1 Tom Sawyer 1 (id de agree_autr_universite)
    2 Candy Neige 2 (id de agree_autr_universite)
    3 Cats eye 1(id de agree_autr_universite)


    agree_autr_universite
    ------------------------------
    id
    --
    ref_unif
    nombre_etudiant_formé

    exemple :

    1 (id auto incrémenté) | 2 (référence université) | 3 (nombre_etudiant_formé)
    2 (id auto incrémenté) | 1 (référence université) | 1 (nombre_etudiant_formé)
    3 (id auto incrémenté) | 2 (référence université) | 5 (nombre_etudiant_formé)


    Mes questions :

    1- Est-ce que la table agree_autre_universite était indispensable ou on aurait pu mettre ces informations dans la table pharmacien ?
    2- Quelle est la relation utilisée dans ce cas ? (pour ma documentation)
    3- est-ce qu'il y a une erreur d'analyse dans ce cas ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    5 117
    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 : 5 117
    Points : 14 744
    Points
    14 744
    Billets dans le blog
    1
    Par défaut
    Bonjour beegees

    Citation Envoyé par beegees Voir le message
    Un pharmacien doit nous indiquer s'il a déjà formé des étudiants d'autres universités que la nôtre.
    A priori, la relation entre une pharmacie (plutôt qu'un pharmacien*) et un étudiant ne vous intéresse pas, seules les universités de rattachement de ces étudiants vous concernent.
    Donc, puisqu'une pharmacie peut former des étudiants de plusieurs universités différentes, on ne peut pas avoir dans la table "PHARMACIE" d'attribut qui identifie l'université (sauf à créer un attribut de type liste, ce qui constituerait un viol de la 1ère forme normale)
    Dans l'autre sens, on peut supposer qu'une même université envoie ses étudiants dans différentes pharmacies.

    On a donc un modèle conceptuel qui ressemble à ceci :
    PHARMACIE 0,n --- échanger --- 0,n UNIVERSITE

    Le MLD qui en dérive contient donc 3 tables :
    PH_PHARMACIE (PH_id, PH_nom, PH_SIREN...)
    UN_UNIVERSITE(UN_id, UN_nom, UN_no_agrement...)
    EC_ECHANGER(UN_ID#, PH_ID#) <-- l'association devient une table dont la PK est constituée des PK des tables concernées par l'association

    * je dis pharmacie plutôt que pharmacien dans la mesure où il peut y avoir plusieurs pharmaciens (personnes titulaires d'un diplôme de pharmacie) dans une officine et il me semble que l'étudiant est plus probablement affecté à une officine (la pharmacie) qu'à un tuteur (le pharmacien). À corriger si ce n'est pas le cas

Discussions similaires

  1. [MySQL] Créer une relation entre deux tables
    Par wsamael dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/12/2018, 17h39
  2. Créer une contrainte entre deux tables par code
    Par Delphi-ne dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 31/08/2017, 18h19
  3. Créer une relation entre deux tables en liste de choix via SQL
    Par myrddin99 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 07/05/2012, 23h44
  4. Comment établir une relation entre deux tables
    Par Monta^^ dans le forum Hibernate
    Réponses: 15
    Dernier message: 30/04/2009, 20h54
  5. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 21h20

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