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é
    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
    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

###raw>template_hook.ano_emploi###