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 :

MLD --> MCD


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Par défaut MLD --> MCD
    Bonjour à tous,

    Je suis à la recherche d'un tutoriel (ou de réponse sur ce forum), comment faire pour passer d'un MLD en MCD.

    Je n'arrive pas à trouver un tutoriel sur internet à ce sujet. On ne fait que trouver des MCD en MLD.

    Je me souviens d'avoir fait cela l'année dernière et je n'avais pas trouvé difficile... Seulement, lorsque j'essaie d'utiliser les règles de conversion de MCD en MLD, j'ai dû mal à remodeliser en MCD. Je dois sans doute oublier un détail important.

    Je dois faire cela à la main afin de comprendre correctement le mécanisme.

    D'avance, je vous remercie.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Contrairement au MCD, dans un MLD, il y a les clés étrangères. C'est déjà une bonne piste pour repérer le sens des associations.

    Quelques exemples...

    1) Projet <----- Personne

    Avec les tables suivantes :
    Projet (prj_id, prj_id_responsable, prj_nom, prj_date_debut...)
    Personne (prs_id, prs_nom, prs_prenom...)

    On voit qu'il y a une clé étrangère prj_id_responsabe dans la table Projet et qu'il n'y en a pas dans la table Personne.

    On en déduit que l'association a ces cardinalités :
    Personne -0,n----(Associer)----1,1- Projet

    Il reste à trouver un verbe qui donne du sens à l'association. Que fait un responsable de projet ? Il dirige le projet. L'association est donc :
    Personne -0,n----Diriger----1,1- Projet

    2) Personne <----Personne_Projet----> Projet

    Avec les tables suivantes :
    Personne (prs_id, prs_nom, prs_prenom...)
    Projet (prj_id, prj_id_responsable, prj_nom, prj_date_debut...)
    Personne_Projet (ppr_id_personne, ppr_id_projet)

    La table Personne_Projet a une clé primaire constituée de deux clés étrangères. C'est donc une table associative et l'association a des cardinalités du type (0,n - 0,n).
    Personne -0,n----(Associer)----0,n- Projet

    Reste à trouver le verbe adéquat. Que peuvent faire plusieurs personnes sur un projet qu'elles peuvent faire sur plusieurs projets ? Elle peuvent travailler pour le projet.
    L'association est donc :
    Personne -0,n----Travailler----0,n- Projet

    Nota :
    Selon mes conventions de nommage, qui sont inspirées de celles de SQLPro, j'aurais établi les tables suivantes à partir du MCD manuel ci-dessus :
    te_personne_prs (prs_id, prs_nom, prs_prenom...)
    te_projet_prj (prj_id, prj_id_responsable, prj_nom, prj_date_debut...)
    tj_prs_travailler_prj_ptp (ptp_id_personne, ptp_id_projet)

    te : table issue d'une entité du MCD.
    tj : table de jointure (ou table associative comme je préfère les appeler)

    Les noms des tables sont suivis des acronymes mnémotechniques permettant de savoir dans les requêtes de quelle table provient la colonne.
    Et avec ce système, on voit que la table associative tj_prs_travailler_prj_ptp est le fruit d'une association entre prs (te_personne_prs) et prj (te_projet_prj). Et comme il y a le verbe de l'association, c'est très facile de refaire le MCD à partir des tables, même si au premier abord, ça complique les noms. Et avec le système des acronymes, il est naturellement impossible d'avoir deux fois le même nom de colonne dans la BDD.

    3) Personne <---- Salarie

    Presque pareil que le 1 mais avec les tables suivantes :
    Personne (prs_id, prs_nom, prs_prenom...)
    Salarie (slr_id_personne, slr_matricule, slr_salaire_brut_mensuel...)

    La clé primaire de la table Salarie est aussi clé étrangère. Nous sommes ici en présence d'une identification relative et, dans le cas présent, d'un héritage :
    Salarie -(1,1)----Etre----0,1- Personne

    4) Hotel <---- Chambre
    Presque pareil que le 1 et le 3 mais avec les tables suivantes :
    Hotel (htl_id, htl_nom...)
    Chambre (chb_id_hotel, chb_num_chambre, chb_nb_lit...)

    Cette fois, la clé primaire de Chambre est composée d'une clé étrangère et d'un identifiant propre à la chambre. Il est évident qu'une chambre n'est pas un hôtel, nous ne sommes donc pas en présence d'un héritage, malgré l'identification relative qui est donc une identification relative simple :
    Hotel -1,n----Avoir----(1,1)- Chambre

    ===================================

    Dans tout ce qui précède, la difficulté est dans la détermination de la cardinalité minimale du côté x,n de l'association. C'est la logique qui doit guider le rétro-concepteur.
    Un hôtel a de toute évidence au moins une chambre => cardinalité mini à 1
    Une personne peut ne diriger aucun projet si elle n'est pas qualifiée pour le faire => cardinalité mini à 0.
    Une personne peut ne travailler pour aucun projet si c'est un comptable ou l'assistante du PDG => cardinalité mini à 0.
    On peut se dire qu'au moins une personne travaille pour un projet mais j'ai plutôt tendance à penser qu'on peut créer un projet avant de savoir qui va le diriger ou travailler dessus => cardinalité mini à 0 mais ça dépend des règles de gestion imposées.

    Bon courage et n'hésite pas à poser des cas concrets qui te poseraient des difficultés.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Par défaut Merci
    Merci de l'explication.

    C'est assez clair... A moi de bosser maintenant :-))

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

Discussions similaires

  1. [MLD] Gestion du lycée (MLD et MCD à corriger)
    Par alouca dans le forum Schéma
    Réponses: 3
    Dernier message: 23/02/2014, 15h31
  2. [MCD] Du MLD vers MCD
    Par speedloader dans le forum Schéma
    Réponses: 3
    Dernier message: 08/01/2011, 18h43
  3. [MCD] Pasage du MLD au MCD
    Par dipnose dans le forum Schéma
    Réponses: 4
    Dernier message: 08/06/2010, 10h20
  4. MLD et MCD avec windev
    Par t.n.b.g dans le forum WinDev
    Réponses: 11
    Dernier message: 21/05/2008, 13h03
  5. DDL DB2 vers DC, MLD ou MCD ?
    Par Luc Orient dans le forum Rational
    Réponses: 4
    Dernier message: 18/03/2007, 12h04

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