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 :

Passage d'un MCD vers MPD [MPD]


Sujet :

Schéma

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut Passage d'un MCD vers MPD
    Bonjour,

    J'ai une difficulté lorsque je transforme mon MCD en MPD à l'aide de Poweramc version 15.1 avec notation E/R + Merise.

    Les règles de gestion de mon exemple sont les suivantes :

    R1 - Les clients passent des commandes.
    R2 - Ces commandes sont acceptées ou refusées. Si une commande est confirmée, elle fait l'objet d'une facture dans sa globalité.
    R3 - Une commande ne peut être facturée qu'une seule fois.

    Il s'agit d'un exemple simplifié, la difficulté se trouve dans le MPD.

    Mon MCD s'établit


    Poweramc transforme mon MCD en MPD


    Après quelques retouches, le MPD obtenu est


    Le code pour la table associative LIER se présente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create table LIER (
    CLIENT_ID            INTEGER                        not null,
    FACTURE_ID           INTEGER                        not null,
    CDE_ID               INTEGER,
    constraint PK_LIER primary key (CLIENT_ID, FACTURE_ID)
    );
    
    alter table LIER
       add constraint FK_LIER_R1_CDE foreign key (CLIENT_ID, CDE_ID)
          references CDE (CLIENT_ID, CDE_ID);
    
    alter table LIER
       add constraint FK_LIER_R2_FACTURE foreign key (CLIENT_ID, FACTURE_ID)
          references FACTURE (CLIENT_ID, FACTURE_ID);
    Je ne m'explique pas pourquoi l'attribut CDE_ID peut être NULL. Bon, il est possible de faire la correction, mais j'aimerais comprendre la démarche de Poweramc.

    Mais le point le plus important est, il semble, l'absence d'une contrainte (CDE_ID, CDE_NUM). Sans cette contrainte, il possible de facturer le bon de commande plusieurs fois à un client. Une erreur qui ne va pas manquer de vous faire incendier par votre client.

    Je pense que Poweramc ne sait pas gérer cette difficulté. Il est donc nécessaire d'intervenir, mais je n'ai pas trouvé la solution.

    Si une âme charitable maîtrise parfaitement Poweramc, je la remercie d'avance de bien vouloir me sortir de mon pétrin.

  2. #2
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Salut,

    peux tu poster tes modélisations car trois règles de gestion ne permettent pas de t'aider.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Je ne comprends pas le sens de ta question. J'ai fourni le MCD, lequel représente la modélisation des entités CLIENT, COMMANDE, FACTURE et l'entité associative LIER qui assure la liaison entre la commande et la facture.

    Je peux te fournir les tables qui résultent de ma modélisation

    Merci de me donner des précisions.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Je pense avoir trouvé la solution, je vais vous la présenter pour que vous puissiez me confirmer si ma démarche est exacte.

  5. #5
    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 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Je ne m'explique pas pourquoi l'attribut CDE_ID peut être NULL. Bon, il est possible de faire la correction, mais j'aimerais comprendre la démarche de Poweramc.
    Power AMC n'a fait qu'appliquer ce que vous lui avez demandé.

    Il serait mieux de modéliser ainsi :



    MLD dérivé par l'outil :



    A la mano, mettre CdeId en clé alternative

    =>



    P.-S.

    Pour les réponses concernant le mode de fonctionnement de Power AMC, postez dans le forum prévu :

    http://www.developpez.net/forums/forumdisplay.php?f=423
    (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.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Merci fsmrel pour votre réponse toujours aussi rapide. J'ai l'impression que vous ne dormez jamais.

    Je suis d'accord avec votre remarque, mais j'ai omis de signaler dans les règles de gestion que certaines factures ne comportaient pas de bon de commande. La facture était faite directement, d'où la modélisation que j'ai présentée.

    En fait, ma difficulté se situait au niveau de la mise en œuvre de CdeId en clé alternative.

    Mais depuis, j'ai trouvé et surtout compris la réflexion à conduire pour éviter
    • de facturer un bon de commande d'un client à un autre client
    • de facturer deux fois un même bon de commande


    Tout ceci a été confirmé par des essais avec une base de données.

    Je commence à mieux comprendre toute cette mécanique. Certes, il me reste beaucoup à faire, mais avec le temps ...

    Merci encore pour vos explications toujours aussi précises.

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

Discussions similaires

  1. MCD vers MPD association réflexive et clés
    Par shadelv dans le forum PowerAMC
    Réponses: 1
    Dernier message: 26/11/2013, 15h57
  2. Passage MCD vers MLD. Créer la table jointure.
    Par Oishiiii dans le forum PowerAMC
    Réponses: 6
    Dernier message: 24/03/2010, 21h49
  3. Réponses: 1
    Dernier message: 07/12/2008, 14h38
  4. pb de passage d'une agrégation d'1 MCD vers le MLD
    Par Angelseb dans le forum Schéma
    Réponses: 5
    Dernier message: 23/01/2007, 02h53
  5. MCD vers MPD
    Par ducker88 dans le forum PowerAMC
    Réponses: 1
    Dernier message: 10/01/2006, 13h41

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