Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Discussion: mcd vers mld

  1. #1

    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2012
    Messages : 104
    Points : -10
    Points
    -10

    Par défaut mcd vers mld

    bonjour,
    je veux savoir pourquoi est ce que les clès primaires migrent des entités de cardinalités fortes vers les entités de cardinalités faibles ?
    en fait comment est ce qu'on peut expliquer cette règle du passage du mcd vers le mld ?
    merci beaucoup d'avance pour toute réponse

  2. #2
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 795
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 795
    Points : 23 044
    Points
    23 044

    Par défaut

    Qu'entendez-vous par "cardinalités fortes" ou "faibles" ?

    Sur mon blog, je donne tous les cas de cardinalités entre deux entités types et leurs conséquences pour l'implémentation des tables dans la BDD, donc les clés étrangères dans le MLD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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
    Expert Confirmé Sénior
    Avatar de fsmrel
    Homme Profil pro François de Sainte Marie
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    4 689
    Détails du profil
    Informations personnelles :
    Nom : Homme François de Sainte Marie
    Localisation : Autre

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

    Informations forums :
    Inscription : septembre 2006
    Messages : 4 689
    Points : 12 522
    Points
    12 522

    Par défaut Au sujet de l'identification relative

    Bonsoir,


    Considérez le bordereau de saisie des commandes ci-dessous :




    Fin des années soixante-dix, avec Merise (1re génération) on modélisait les lignes de commande au moyen d’une association (Commander dans l’exemple) :




    Ou en appelant un chat, un chat :



    Sémantiquement parlant, la ligne de commande peut être néanmoins considérée non pas comme une association entre la commande et le produit, mais, à l’image de ce qu’on perçoit dans le bordereau de saisie, plutôt comme une propriété multivaluée de la commande : LigneCommande est une entité-type faible (weak entity-type) au sens de Chen, Codd et tutti. Avec Merise 2e génération, on a eu la possibilité d’utiliser l’identification relative pour implémenter cela. Avec PowerAMC :




    Avec WinDesign (noter la dépendance fonctionnelle merisienne LigneCommande -> Commande) :




    Les AGL transforment ainsi le MCD en MLD :




    La clé de la table est la paire {CommandeId, NoLigne}. L’attribut CommandeId de la table LigneCommande est par construction hérité de l’attribut CommandeId de la table Commande. Par convention (mais ça n’est pas un impératif), pour une valeur C de l’attribut CommandeId de la table LigneCommande, si la commande C comporte Nc lignes de commande, l’attribut NoLigne est numéroté de 1 à N, ligne de commande par ligne de commande. Même principe pour chaque commande.

    Mais attention, pour une commande et un produit donnés il n’y a qu’une quantité et un montant (ce qui est garanti quand la ligne de commande fait l’objet d’une association, comme dans les exemples ci-dessus faisant référence à Merise 1re génération). Il faut donc définir une contrainte sous forme de clé alternative {CommandeId, ProduitId} pour la table LigneCommande :




    Quoi qu’il en soit, Pour mettre en œuvre la numérotation des lignes de commande (attribut NoLigne), voyez le billet Trigger pour incrémentation relative proposé par CinePhil.
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)


    De grâce, pas de questions techniques par MP, ma boîte de réception explose !
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)

  4. #4

    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2012
    Messages : 104
    Points : -10
    Points
    -10

    Par défaut

    Merci à tous pour les réponse mais ma question n'est pas "comment passer du mcd au mld ?" je metrise la méthode mais
    ma question est pourquoi si on a d'une part (1,n) et de l'autre (1,1) la clès de la première sera inscrite dans la table de la seconde ?
    merci d'avance pour toute réponse

  5. #5
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 795
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 795
    Points : 23 044
    Points
    23 044

    Par défaut

    Ben tu as la réponse dans mon billet de blog !

    pourquoi si on a d'une part (1,n) et de l'autre (1,1) la clès de la première sera inscrite dans la table de la seconde ?
    Tu as l'association suivante :
    A -1,n----associer----1,1- B

    Elle est issue de la règle de gestion suivante :
    Un A est associé à un à plusieurs B et un B est associé à un seul A.

    Le MLD détermine la composition des tables de la future BDD. Et dans un SGBDR, les tables sont associées par des clés étrangères référençant les clés primaires d'autres tables.

    Dans le cas de cette association, si je mets dans la table A une clé étrangère référençant B, je ne pourrai au maximum référencer qu'un seul B pour un A, ce qui est contraire à la règle de gestion et aux cardinalités 1,n du MCD. Par contre, en mettant dans B une clé étrangère référençant A, j'obéis bien à la règle de gestion et aux cardinalités 1,1 du MCD et je n'interdit nullement qu'un A soit référencé par plusieurs B.

    Pour respecter totalement la règle de gestion et le MCD, il faudra tout de même prévoir, dans le SGBD, un processus, trigger ou procédure, pour que, lors de la création d'un A, au moins un B lui soit immédiatement associé. Et comme le B en question ne peut être associé qu'à un seul A, il faut donc créer le B en même temps que le A.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •