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 :

Représentation d'une entité produit par deux autres [MCD]


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Représentation d'une entité produit par deux autres
    Bonjour
    Je viens solliciter votre aide pour la conception du MCD suivant:
    Nom : chema.png
Affichages : 740
Taille : 6,2 Ko

    en effet, j'ai des bouteilles vide qui se font fabriqué par un fabriquant. Puis un autre fabriquant prépare une mélange de jus. ensuite un troisième fabriquant se charge de remplir un jus dans une bouteille. Jusqu'à là j'ai pu représenter cela dans mon mcd sans être sur si j'ai bon.
    par contre, une fois que j'ai une bouteille remplie, j'ai un employé qui doit faire boire ce bouteille de jus à une personne sous la supervision d'un superviseur, je n'arrive pas à modéliser ce dernier partie.

    Merci de bien vouloir m'aider.

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour,

    Je pense que tu ne prends pas le problème dans le bon sens.

    Si tu pars d'un PRODUIT (ta bouteille de jus) : ce produit est associé à un FABRIQUANT de BOUTEILLE, un FABRIQUANT de JUS et un FABRIQUANT de REMPLISSAGE (c'est pas français mais c'est pas grave ).
    Pour ma part, je verrais plus quelque chose comme ça :

    Nom : Sous-modèle56.jpg
Affichages : 507
Taille : 13,9 Ko

    Concernant la deuxième partie (celle qui semble te poser un peu plus problème, pourrais tu essayer de reformuler?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup ZenZiTone je comprends mieux maintenant.
    pour la deuxième partie en faite, c'est que un EMPLOYE doit faire boire une bouteille de jus à une PERSONNE en présence d'un SUPERVISEUR qui serve de témoins pour cette démarche qui doit se faire chez un fabriquant.
    Si je raisonne en partant de ta proposition, un PRODUIT sera donné à une PERSONNE par un EMPLOYE en présence d'un SUPERVISEUR sachant que le démarche se passe chez un fabriquant précis.
    voici une façon de visualiser mon raisonnement:
    Nom : chema2.png
Affichages : 455
Taille : 5,7 Ko

    merci encore une fois pour ton aide

  4. #4
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour,

    un PRODUIT sera donné à une PERSONNE par un EMPLOYE en présence d'un SUPERVISEUR sachant que le démarche se passe chez un fabriquant précis
    Il n'y a pas besoin de faire de liaison entre BUVAGE et FABRIQUANT car tu as déjà le FABRIQUANT dans PRODUIT (ça ferait une redite donc). De même, les cardinalités BUVAGE/EMPLOYE et BUVAGE/SUPERVISEUR ne correspondent pas à ce que tu as dit. Il faudrait mettre du 1,1 / 1,1.

    L'idée étant que l'association BUVAGE devienne une entité comprenant id_produit, id_personne, id_employe, id_superviseur. On pourra retrouver le fabriquant dans l'entité PRODUIT.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    bonsoir
    au faite j'ai lié entre BUVAGE et FABRIQUANT car le contraint veut que le FABRIQUANT soit différent à chaque fois. ainsi un FABRIQUANT ne peut pas réaliser qu'une seule tache dans le processus de fabrication BOUTEILLE, JUS, REMPLISSAGE et BUVAGE. en tout il y a quatre FABRIQUANT différents qui participent et chacun réalise une et une seule tache pour un PRODUIT donné.
    par exemple si j'ai 4 FABRIQUANT F1, F2, F3 et F4.
    F1 à créé BOUTEILLE B1 JUS J1
    F2 à créé BOUTEILLE B2 JUS J2

    F3 réalise REMPLISSAGE R1 = J1+B2 ET R2 J2+B2

    F4 realise BUVAGE BU1 = R1 BU2 = R2

    le processus peut continuer ainsi sachant qu'on peut échanger les FABRIQUANT à condition qu'un FABRIQUANT ne réalise le REMPLISSAGE de BOUTEILLE ou JUS qu'il a lui même fabriqué ni le BUVAGE qui a lui même réalisé le REMPLISSAGE.

    c'est un peu tordu mon truc mais voilà, ce sont les contraints CHAQUE TACHE dois être effectué par un fabriquant différents.

  6. #6
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par sergeants Voir le message
    bonsoir
    au faite j'ai lié entre BUVAGE et FABRIQUANT car le contraint veut que le FABRIQUANT soit différent à chaque fois. ainsi un FABRIQUANT ne peut pas réaliser qu'une seule tache dans le processus de fabrication BOUTEILLE, JUS, REMPLISSAGE et BUVAGE. en tout il y a quatre FABRIQUANT différents qui participent et chacun réalise une et une seule tache pour un PRODUIT donné.
    par exemple si j'ai 4 FABRIQUANT F1, F2, F3 et F4.
    F1 à créé BOUTEILLE B1 JUS J1
    F2 à créé BOUTEILLE B2 JUS J2

    F3 réalise REMPLISSAGE R1 = J1+B2 ET R2 J2+B2

    F4 realise BUVAGE BU1 = R1 BU2 = R2

    le processus peut continuer ainsi sachant qu'on peut échanger les FABRIQUANT à condition qu'un FABRIQUANT ne réalise le REMPLISSAGE de BOUTEILLE ou JUS qu'il a lui même fabriqué ni le BUVAGE qui a lui même réalisé le REMPLISSAGE.

    c'est un peu tordu mon truc mais voilà, ce sont les contraints CHAQUE TACHE dois être effectué par un fabriquant différents.
    C'est tordu en effet

    Du coup ça justifie l'association vers le FABRIQUANT au niveau du BUVAGE. Pourrais-tu faire un résumé de tes contraintes sous la forme de phrases courtes?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    l'objectif de la base de donné et d'enregistrer des processus qui contient 4 étape : BOUTEILLE, JUS, REMPLISSAGE et BUVAGE
    le contrainte est le suivant:

    1. chaque FABRIQUANT ne doit effectuer qu'une seule tache pour un processus donné.

    Un FABRIQUANT fabrique une BOUTEILLE, un autre crée un JUS un troisième effectue le REMPLISSAGE et enfin un quatrième FABRIQUANT s'en charge de faire boire ce jus à une PERSONNE. cette tache de BUVAGE est effectué par un EMPLOYE en présence d'un SUPERVISEUR.

  8. #8
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par sergeants Voir le message
    Bonjour
    l'objectif de la base de donné et d'enregistrer des processus qui contient 4 étape : BOUTEILLE, JUS, REMPLISSAGE et BUVAGE
    le contrainte est le suivant:

    1. chaque FABRIQUANT ne doit effectuer qu'une seule tache pour un processus donné.

    Un FABRIQUANT fabrique une BOUTEILLE, un autre crée un JUS un troisième effectue le REMPLISSAGE et enfin un quatrième FABRIQUANT s'en charge de faire boire ce jus à une PERSONNE. cette tache de BUVAGE est effectué par un EMPLOYE en présence d'un SUPERVISEUR.
    Si les quatre process sont obligatoires, pourquoi ne pas créer une entité PERSONNE, associée au produit (comme le FABRICANT) avec les différents rôles : gouteur, employé et superviseur. En conversion MLR ça te ferait les entités suivantes:
    -FABRICANT(id_fabricant PK)
    -PRODUIT(id_produit PK; id_fabricant_bouteille FK; id_fabricant_jus FK; id_fabricant_remplissage FK; id_fabricant_buvage FK; id_personne_gouteur FK; id_personne_employe FK; id_personne_superviseur FK)
    -PERSONNE(id_personne PK)

    Est-ce que cela répondrait à ton besoin?

  9. #9
    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
    Bonjour


    J’arrive un peu tard, j’avais préparé un message, mais pris par d’autres activités j’ai oublié de l’envoyer...

    Bref...

    Il y a un enchaînement des actions à chercher à mettre en évidence : il faudrait qu’une boisson ne puisse être absorbée qu’à la condition que celle-ci soit présente dans une bouteille qui soit passée par l’étape de remplissage.

    De même, une bouteille ne doit pouvoir être remplie qu’avec une boisson passée par le stade de la préparation d’où le diagramme où l’on doit donc essayer de représenter la chronologie imposée pour les actions à réaliser :

     
    
    [FABRICANT]--0,n-------(PREPARER)-------0,n--[BOISSON]              Chronologie
                               |                                             |
                               |                                             |
                               0,n                                           |
                               |                                             |
                               |                                             |
                              (R)                                            |
                               |                                             |
                               |                                             |
                              1,1                                            |
                               |                                             |
                               |                                             |
                           (REMPLIR)                                         [
                               |                                             |
                               |                                             |
                              0,1                                            |
                               |                                             |
                               |                                             V
                          [BOUTEILLE]                                        
     
    

    Le dogme Merise interdit, hélas ! qu’une association soit branchée sur une autre association, c'est-à-dire qu’une triplette pour assurer la chronologie, du genre (PREPARER)—0,n--------(R)--------1,1—(REMPLIR) serait illégale. On passera donc par une vieille astuce vaseuse, vieille comme Merise elle-même, consistant à déguiser l’association PREPARER en entité-type (appelons-la PREPARATION) :

    
    [FABRICANT]--0,n--(R1)----1,1--[PREPARATION]--1,1----(R2)-----0,n--[BOISSON]
                                         | 
                                         | 
                                        0,n 
                                         |     
                                         |      
                                    (REMPLIR)
                                         |
                                         |
                                        0,1
                                         |
                                         |
                                    [BOUTEILLE] 
    
    
    Ainsi, un remplissage ne peut avoir lieu qu’avec une boisson déjà préparée.

    Mais remplir une bouteille est une tâche à réaliser par un fabricant dont c’est le rôle exclusif :

    
    [FABRICANT]--0,n--(R1)----1,1--[PREPARATION]--1,1----(R2)-----0,n--[BOISSON]
                                         | 
                                         | 
                                        0,n 
                                         |     
                                         |      
    [REMPLISSEUR]--0,n---------------(REMPLIR)
                                         |
                                         |
                                        0,1
                                         |
                                         |
                                    [BOUTEILLE] 
    
    

    En conséquence de quoi REMPLIR devient une association ternaire, qui ici n’est pas pertinente et peut provoquer des effets secondaires, donc prudemment on déguisera REMPLIR elle aussi en entité-type (REMPLISSAGE) :

    
    [FABRICANT]--0,n--(R1)----1,1--[PREPARATION]--1,1----(R2)-----0,n--[BOISSON]
                                         | 
                                         | 
                                        0,n 
                                         |     
                                         |      
                                       (R3)
                                         |      
                                         |      
                                        1,1 
                                         |      
                                         |      
    [REMPLISSEUR]--0,n--(R4)--1,1--[REMPLISSAGE]
                                         |
                                         |
                                        1,1      
                                         |      
                                       (R5)
                                         |      
                                         |      
                                        0,1
                                         |
                                         |
                                    [BOUTEILLE] 
    
    

    A son tour, l’absorption d’une boisson ne peut avoir lieu que lorsque la bouteille concernée est remplie.


    Un MCD pourrait être le suivant :




    Remarques

    — FABRICANT a été renommé en ENTREPRISE, car toutes les entreprises parties prenantes dans cette affaire ne sont pas forcément des fabricants.


    — Ce MCD a été réalisé avec PowerAMC. Par convention, lorsqu’on déguise une association en entité-type, par exemple PREPARER en PREPARATION, apparaissent des cardinalités 1,1 mises entre parenthèses :

    [ENTREPRISE---0,n--------(R1)---(1,1)--------[PREPARATION]

    Ce qui veut dire que la pseudo entité-type PREPARATION n’a pas d’identifiant en propre, mais hérite des identifiants des entités-types qu’elle met en relation, ce qui apparaît clairement au stade du MLD (où les attributs ont parfois été renommés pour des raisons de lisibilité, par exemple EntrepriseId renommé en PreparateurId dans la table PREPARATION) :





    Script de création des tables SQL :

    
    CREATE TABLE ENTREPRISE
    (
            EntrepriseId           INT                  NOT NULL,
            EntrepriseNom          VARCHAR(64)          NOT NULL,
       CONSTRAINT ENTREPRISE_PK PRIMARY KEY (EntrepriseId)
    ) ;
    
    CREATE TABLE BOISSON
    (
            BoissonId            INT                  NOT NULL,
            BoissonLibelle       VARCHAR(64)          NOT NULL,
        CONSTRAINT Boisson_PK PRIMARY KEY (BoissonId)
    ) ;
    
    CREATE TABLE PREPARATION
    (
            BoissonId            INT                  NOT NULL,
            PreparateurId        INT                  NOT NULL,
        CONSTRAINT PREPARATION_PK PRIMARY KEY (BoissonId, PreparateurId),
        CONSTRAINT PREPARATION_BOISSON_FK FOREIGN KEY (BoissonId)
            REFERENCES BOISSON (BoissonId),
        CONSTRAINT PREPARATION_ENTREPRISE_FK FOREIGN KEY (PreparateurId)
            REFERENCES ENTREPRISE (EntrepriseId)
    ) ;
    
    CREATE TABLE BOUTEILLE
    (
            BouteilleId          INT                  NOT NULL,
            FabriquantId         INT                  NOT NULL,
        CONSTRAINT BOUTEILLE_PK PRIMARY KEY (BouteilleId),
        CONSTRAINT BOUTEILLE_ENTREPRISE_FK01 FOREIGN KEY (FabriquantId)
            REFERENCES ENTREPRISE (EntrepriseId)
    ) ;
    
    CREATE TABLE REMPLISSAGE
    (
            BouteilleId          INT                  NOT NULL,
            RemplisseurId        INT                  NOT NULL,
            BoissonId            INT                  NOT NULL,
            PreparateurId        INT                  NOT NULL,
       CONSTRAINT REMPLISSAGE_PK PRIMARY KEY (BouteilleId),
       CONSTRAINT REMPLISSAGE_PREPARATION_FK FOREIGN KEY (BoissonId, RemplisseurId)
          REFERENCES PREPARATION (BoissonId, PreparateurId),
       CONSTRAINT REMPLISSAGE_BOUTEILLE_FK FOREIGN KEY (BouteilleId)
          REFERENCES BOUTEILLE (BouteilleId)
    ) ;
    
    CREATE TABLE PERSONNE
    (
            PersonneId           INT                  NOT NULL,
            PersonneNom          VARCHAR(64)          NOT NULL,
        CONSTRAINT PERSONNE_PK PRIMARY KEY (PersonneId)
    )
     ;
    
    CREATE TABLE ABSORPTION
    (
            BouteilleId          INT                  NOT NULL,
            HebergeurId          INT                  NOT NULL,
            BuveurId             INT                  NOT NULL,
            EmployeId            INT                  NOT NULL,
            SuperviseurId        INT                  NOT NULL,
        CONSTRAINT ABSORPTION_PK PRIMARY KEY (BouteilleId),
        CONSTRAINT ABSORPTION_REMPLISSAGE_FK04 FOREIGN KEY (BouteilleId)
            REFERENCES REMPLISSAGE (BouteilleId),
         CONSTRAINT ABSORPTION_PERSONNE_BUVEUR_FK FOREIGN KEY (BuveurId)
            REFERENCES PERSONNE (PersonneId),
        CONSTRAINT ABSORPTION_PERSONNE_SUPERV_FK FOREIGN KEY (SuperviseurId)
            REFERENCES PERSONNE (PersonneId),
        CONSTRAINT ABSORPTION_PERSONNE_EMP_FK FOREIGN KEY (EmployeId)
            REFERENCES PERSONNE (PersonneId)
    ) ;
    
    
    Il manque les contraintes d’exclusion, selon lesquelles une entreprise qui fabrique les bouteilles ne seraient pas celles qui les remplit, etc. De même la personne qui avale une boisson ne peut pas se servir elle-même, etc.

    Ces contraintes font l’objet de triggers, dont la rédaction dépend du SGBD. Quel est celui-ci ?
    (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.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je vous remercie de votre aide surtout fsmrel que j'ai pas eu le temps de lui dire merci il m'a été très utiles votre réponse.

  11. #11
    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
    Bonjour sergeants,


    Nous sommes tous contents d'avoir pu vous aider avec nos réponses. N'hésitez pas à voter pour celles d'entre-elles qui vous ont été utiles...
    (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. Création d'une variable comme produit de deux autres
    Par asty69 dans le forum Débutez
    Réponses: 13
    Dernier message: 24/05/2011, 09h30
  2. Réponses: 2
    Dernier message: 23/11/2006, 21h07
  3. Réponses: 11
    Dernier message: 13/07/2006, 16h15
  4. Une application acceptable par un autre
    Par jop76 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 05/09/2005, 13h41
  5. Rendre une disquette illisible par d'autres que moi
    Par kivoch dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 26/12/2003, 22h49

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