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 :

MCD gestion de la vente de moto verification des relation et cardinalité


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Par défaut MCD gestion de la vente de moto verification des relation et cardinalité
    Bonjours à tous, suis entre de préparer un travail de fin de cycle qui porte sur la création d'un logiciel de gestion de la vente des moto dans un magasin.
    je voulais juste m'assurez si j'ai bien fait mon mcd pour passer à l’étape qui suit; voici en annexe les réglés de gestion et le mcd :

    Règles de gestion du MCD
    - Un Client passe une ou plusieurs commandes.
    - Une commande est passée par un et un seul client.
    - Une commande concerne un ou plusieurs articles à une quantité donnée.
    - Une facture concerne un ou plusieurs articles à une date donnée.
    - Un article peut être concerné par une ou plusieurs commandes.
    - Un utilisateur établit une ou plusieurs Facture.
    - Une facture est établie par un et un seul utilisateur.
    voici en annexe le MCD
    Nom : mcd vente moto.JPG
Affichages : 30903
Taille : 47,2 Ko

    NB: la quantité commander est identique à la quantité qui est facturé sauf que la commande peut être faite aujourd’hui, mais la facture une autre jour.
    est la sortie de la marchandise du stock est conditionner par une facture.
    merci à tous ,j'attends vos remarques, vos idées et vos conseille.

  2. #2
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 212
    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 212
    Billets dans le blog
    16
    Par défaut
    Bonsoir jrmpp,


    Selon votre MCD, une facture peut concerner plusieurs commandes.

    Soit cde1 et cde2 ces commandes. Elles peuvent concerner des clients différents, par exemple la commande cde1 concerne le client cli1 tandis que la commande cde2 concerne le client cli2.

    Donc si la facture f1 fait référence à ces deux commandes cde1 et cde2, en toute logique cette facture concerne les clients cl1 et cl2...

    L’association CONCERNER est ternaire, et du fait des 3 cardinalités <1,n>, par définition l’identifiant de cette association est le triplet {Numfact, Codeart, Numcom}.

    Selon le MCD, ce qui suit est donc légal :

    CLIENT {Numcl, ...} 
            cli1                
            cli2  
    
    COMMANDE {Numcom, Numcl}    ARTICLE {Codeart, ...}    FACTURE {Numfact, ...}
              cde1    cli1               a1                        f1
              cde2    cli2 
    
    CONCERNER {Numfact, Codeart, Numcom, Qtecom} 
               f1       a1       cde1    q1
               f1       a1       cde2    q2
    
    C’est-à-dire que la facture f1 concerne effectivement à la fois les deux clients cli1 et cli2, ce que vous ne souhaitez vraisemblablement pas...
    (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.

  3. #3
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir jrmpp,


    Selon votre MCD, une facture peut concerner plusieurs commandes.

    Soit cde1 et cde2 ces commandes. Elles peuvent concerner des clients différents, par exemple la commande cde1 concerne le client cli1 tandis que la commande cde2 concerne le client cli2.

    Donc si la facture f1 fait référence à ces deux commandes cde1 et cde2, en toute logique cette facture concerne les clients cl1 et cl2...

    L’association CONCERNER est ternaire, et du fait des 3 cardinalités <1,n>, par définition l’identifiant de cette association est le triplet {Numfact, Codeart, Numcom}.

    Selon le MCD, ce qui suit est donc légal :

    CLIENT {Numcl, ...} 
            cli1                
            cli2  
    
    COMMANDE {Numcom, Numcl}    ARTICLE {Codeart, ...}    FACTURE {Numfact, ...}
              cde1    cli1               a1                        f1
              cde2    cli2 
    
    CONCERNER {Numfact, Codeart, Numcom, Qtecom} 
               f1       a1       cde1    q1
               f1       a1       cde2    q2
      
    
    C’est-à-dire que la facture f1 concerne effectivement à la fois les deux clients cli1 et cli2, ce que vous ne souhaitez vraisemblablement pas...
    [pre]

    Bonjour fsmrel

    Merci pour vos Conseils effectivement c'est cette relation entre facture et commande qui me compliquer,
    j'ai essayer de faire certaine modification au sein de mon MCD :

    effectivement l’idée est que une facture sois associé à une commande et non une facture associé à plusieurs commande.
     
    Commande{Numcom,Numcl}  
             Cde1    Cl1               
             Cde2    Cl2               
             Cde3    Cl3               
    
    CONTENIR{Numcom, Codeart,Qtecom}
               Cde1     a1     q1
               Cde2     a1     q2
               Cde3     a1     q3
    
    CONCERNER{Numfact,Numcom} 
                f1      Cde1        
                f2      Cde2         
                f3      Cde3
    
    Sauf que une commande peut contenir plusieurs article.
    Une facture concerne une seule commande.
    Voici le MCD modifier en annexe :

    Nom : mcd ameliorer.JPG
Affichages : 11110
Taille : 50,4 Ko

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 603
    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 : 10 603
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Que se passe-t-il si la livraison n'est pas conforme à la commande, par exemple s'il manque certains articles, vous facturez tout de même au titre de la commande ?

    Habituellement, la facture se rapporte à la ou les livraisons faites pour la commande

    Et pour pouvoir rapprocher les factures des commandes, le modèle classique est d'avoir des lignes de commande d'une part et des lignes de facture d'autre part

    COMMANDE 1,n --- contenir --- (1,1) LIGNE_CDE 1,1 --- concerner --- 0,n ARTICLE

    FACTURE 1,n --- inclure --- (1,1) LIGNE_FAC

    Les lignes étant des entité-type faibles, on les identifie relativement à leur entité-type forte, c'est ce que matérialisent les parenthèses sur les cardinalités.

  5. #5
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Que se passe-t-il si la livraison n'est pas conforme à la commande, par exemple s'il manque certains articles, vous facturez tout de même au titre de la commande ?

    Habituellement, la facture se rapporte à la ou les livraisons faites pour la commande

    Et pour pouvoir rapprocher les factures des commandes, le modèle classique est d'avoir des lignes de commande d'une part et des lignes de facture d'autre part

    COMMANDE 1,n --- contenir --- (1,1) LIGNE_CDE 1,1 --- concerner --- 0,n ARTICLE

    FACTURE 1,n --- inclure --- (1,1) LIGNE_FAC

    Les lignes étant des entité-type faibles, on les identifie relativement à leur entité-type forte, c'est ce que matérialisent les parenthèses sur les cardinalités.
    Merci pour votre réflexion sauf que (la livraison n'est pas être conforme à la commande) cela dépend de chaque entreprise ou magasin.
    prénom un exemple typique un client se présente dans un magasin, l'article commander n'est pas en stock automatique la commande est annulé(le client avant de passer sa commande doit s'assurer que la marchandise existe).

    Pour les lignes commandes et les lignes factures, j'ai vu cette représentation dans beaucoup des MCD sauf que je ne
    comprends pas très bien le sens de cette relation(COMMANDE 1,n --- contenir --- (1,1) LIGNE_CDE 1,1 --- concerner --- 0,n ARTICLE),du faite que selon la règle du passage du MCD au MLD :

    Une association de type N :N (c’est à dire qui a les cardinalités maximales positionnées à « N » des 2 côtés de l’association) se traduit par la création d’une table dont la clé primaire est composée des clés étrangères référençant les relations correspondant aux entités liées par l’association.

    d’où avec Mon MCD Modifier je devrais déjà avoir ça comme MLD si je ne me trompe pas :

    Nom : MLD.JPG
Affichages : 10081
Taille : 48,2 Ko

    je ne sais pas si je suis dans le bon, merci quand même.

  6. #6
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 212
    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 212
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    A propos de l’identification des entités-types

    Je cite Yves Tabourier qui écrit à la page 80 de son remarquable ouvrage (De l’autre côté de MERISE, Les Éditions d’organisation, 1986), ce qui constitue une règle d’or valant pour les identifiants des entités-types florissant dans les MCD merisiens (règle d’or trop souvent méconnue, hélas ! Et comme disent Goethe et Cie, « ceux qui ont oublié le passé sont condamnés à le revivre... ») :

    « ... la fonction d’une propriété est de décrire les objets (et les rencontres), alors que l’identifiant ne décrit rien. Son rôle fondamental est d’être sûr de distinguer deux jumeaux parfaits, malgré des descriptions identiques.
    L’expérience montre d’ailleurs que l’usage des “identifiants significatifs” (ou “codes significatifs”) a pu provoquer des dégâts tellement coûteux que la sagesse est d’éviter avec le plus grand soin de construire des identifiants décrivant les objets ou, pis encore, leurs liens avec d’autres objets... »

    Parce qu’il est au niveau conceptuel Merise, Tabourier parle d’identifiants, et ceux-ci ne doivent pas être porteurs d’information mais il suffit ensuite, au niveau SQL, de transcrire identifiant par clé, la règle reste valable, sinon plus ! En passant, on notera qu’une clé primaire n’accepte pas d’être polluée par le bonhomme Null, pour des raisons évidentes.

    Après avoir passé plus de 45 ans à mettre en oeuvre, audité, réparé des wagons de bases de données, je confirme que Tabourier a totalement raison : j’ai vu des applications opérationnelles partir à la poubelle ne serait-ce que pour l’emploi d’identifiants significatifs. En passant, je vous renvoie à une histoire vécue, où les concepteurs ont compris le message et revu sagement leur MCD.

    Vous me direz qu’un numéro de commande ou de facture ça ne change pas, mais quid si le législateur se mêlait de normer et nous imposer les choses ?

    Pour ma part, je modélise l’entité-type COMMANDE en la dotant d’un identifiant non porteur d’information et donc invariant. Le numéro de commande fait alors l’objet d’un identifiant alternatif, point d’entrée dans le système, respectant la contrainte d’unicité des numéros de commande, et au stade SQL localisé dans la seule table COMMANDE, tandis que l’identifiant non porteur d’information donne lieu à la clé primaire de la table et peut se retrouver en tant que clé étrangère (foreign key) dans d’autres tables (CONCERNER par exemple).

    Je verrais donc plutôt votre base de données ainsi :

     
    CREATE TABLE CLIENT 
    (
            CliId          INTEGER       NOT NULL
          , Numcl          INTEGER       NOT NULL
          , ...
        , CONSTRAINT CLIENT_PK PRIMARY KEY (CliId) 
        , CONSTRAINT CLIENT_AK UNIQUE (Numcl)
    ) ;
    
    CREATE TABLE ARTICLE 
    (
            ArtId          INTEGER       NOT NULL
          , Codeart        INTEGER       NOT NULL
          , ...
        , CONSTRAINT ARTICLE_PK PRIMARY KEY (ArtId) 
        , CONSTRAINT ARTICLE_AK UNIQUE (Codeart)
    ) ;
    
    CREATE TABLE COMMANDE 
    (
            ComId          INTEGER       NOT NULL
          , Numcom         INTEGER       NOT NULL
          , Datecom        DATE          NOT NULL
          , CliId          INTEGER       NOT NULL
        , CONSTRAINT COMMANDE_PK PRIMARY KEY (ComId) 
        , CONSTRAINT COMMANDE_AK UNIQUE (Numcom)
        , CONSTRAINT COMMANDE_CLIENT_FK FOREIGN KEY (CliId)
              REFERENCES CLIENT
    ) ;
    
    CREATE TABLE CONTENIR
    (
            ComId          INTEGER       NOT NULL
          , ArtId          INTEGER       NOT NULL
          , Qtecom         INTEGER       NOT NULL
        , CONSTRAINT CONTENIR_PK PRIMARY KEY (ComId, ArtId) 
        , CONSTRAINT CONTENIR_COMMANDE_FK FOREIGN KEY (ComId)
              REFERENCES COMMANDE 
              ON DELETE CASCADE
        , CONSTRAINT CONTENIR_ARTICLE_FK FOREIGN KEY (ArtId)
              REFERENCES ARTICLE
    ) ;
    

    Citation Envoyé par jrmpp
    je ne comprends pas très bien le sens de cette relation (COMMANDE 1,n --- contenir --- (1,1) LIGNE_CDE 1,1 --- concerner --- 0,n ARTICLE)
    Vous avez produit la table CONCERNER (renommée en LIGNE_CDE) par dérivation de l’association CONCERNER, ce qui est bien entendu tout à fait correct.

    De son côté, l’ami escartefigue a considéré que la ligne de commande était une propriété multivaluée de la commande, d’où la mise en oeuvre d’une entité-type faible (weak entity type) LIGNE_CDE. Dans cette approche, il est d’usage en Merise d’identifier l’entité-type faible relativement à l’entité-type forte (regular entity type) : il y a effectivement plus d’une façon de modéliser les lignes de commande, mais en l’occurrence la vôtre est la plus naturelle.

    Cela dit, reste le lettrage, c’est-à-dire rapprocher les lignes de facture et les lignes de commande, mais en prouvant que l’on ne pourra pas rapprocher les lignes de commande d’un client avec les lignes de facture d’un autre client, et cette fois-ci l’identification relative à CLIENT rendra bien service...


    A suivre.
    (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.

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

Discussions similaires

  1. MCD Gestion des périodes de vente d'un article
    Par Architecture dans le forum Schéma
    Réponses: 1
    Dernier message: 13/02/2009, 23h36
  2. [MCD] Gestion d'acces a des applications
    Par Tibler dans le forum Schéma
    Réponses: 12
    Dernier message: 25/04/2006, 18h10
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. [BEST_PRACTICE][Merise] MCD & gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 4
    Dernier message: 16/04/2003, 17h07

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