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 :

[MCD2MPD] table d'association à plusieurs clés primaires


Sujet :

Schéma

  1. #1
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut [MCD2MPD] table d'association à plusieurs clés primaires
    Salut,

    Voilà le topo. Je dispose de 4 tables comme suits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Table_1 (id_1, attribut_11)
    Table_2 (id_2, attribut_21, attribut_22)
    Table_3 (id_3, attribut_31, attribut_32, attribut_33)
    Table_4 (id_4, attribut_41, attribut_42, attribut_43, attribut_44)
    Les relations entre ces tables sont comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Table_1 (0,1) _ (1,N) Table_2 avec propriétés (prop_12-1, prop_12-2)
    Table_2 (1,1) _ (1,N) Table_3
    Table_3 (0,N) _ (1,N) Table_4 avec propriété (prop_34-1)
    Sur la base de ces relations et de ces propriétés, le MPD sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Table_1 (id_1, attribut_11)
    Table_2 (id_2, attribut_21, attribut_22, id_1, prop_12-1, prop_12-2)
    Table_3 (id_3, attribut_31, attribut_32, attribut_33, id_2)
    Table_4 (id_4, attribut_41, attribut_42, attribut_43, attribut_44)
    Table_34 (id_4, id_3, prop_34-1)
    La question est comment obtenir (dans le cas où c'est possible) une table d'association comme suit dans le MPD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table1234 (id_4, id_3, id_2, id_1, prop_12-1, prop_12-2, prop34-1)
    Cette table permettra d'associer les identifiants des 4 tables surtout avec les propriétés de l'association entre Table_1 et Table_2

    Merci pour votre aide.

    Je reste disponible pour toute information supplémentaire.

    A+

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Table_1 (0,1) _ (1,N) Table_2 avec propriétés (prop_12-1, prop_12-2)
    Comme je l'explique dans mon blog, ces cardinalités entraînent la création d'une table associative. Tu devrais donc avoir une table_1_2 (id_1, id_2, prop_12-1, prop_12-2) et non pas une clé étrangère de table_1 dans table_2.

    La question est comment obtenir (dans le cas où c'est possible) une table d'association comme suit dans le MPD :
    Table1234 (id_4, id_3, id_2, id_1, prop_12-1, prop_12-2, prop34-1)
    Ben non ! Cette table serait issue d'une association entre les 4 tables, ce qui n'est pas du tout la même chose !

    Si tu nous disais plus concrètement de quoi il s'agit (plutôt que les abstractions table_x, propriete_n), nous pourrions t'aider pus efficacement à modéliser ton domaine.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    En effet, vous avez bien raison, j'ai cru simplifier en généralisant le propos mais il s'avère que ça complique encore plus le problème, alors voilà toute l'histoire.

    Il s'agit de la gestion intégrale de ce qui se déroule dans une pâtisserie, et ma conception est la suivante :

    1- Une table Ingrédient_solide.
    2- Une table Ingrédient_liquide.
    3- Une table Action.
    4- Une table Etape associée aux 3 tables précédentes de telles façon que :
    4-1- Une Etape correspond à une Action.
    4-2- Une Etape correspond à aucun ou à plusieurs Ingrédient_solide.
    4-3- Une Etape correspond à aucun ou à plusieurs Ingrédient_liquide.
    5- Une table Recette correspondant à une ou à plusieurs Etape
    6- Une table Chef créant une ou plusieurs Recette.
    7- Une table Préparation correspondant au paramétrage d'un ou de plusieurs Recette.
    8- Une table Commis paramétrant une ou plusieurs Préparation

    Le MCD que j'ai actuellement ainsi que le MPD lui correspondant sont joints à ce post.

    Tout mon problème réside dans le mot paramètrage. En effet, l'exemple qui suit permet de mieux appréhender le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1- Table Ingrédient_solide contient les enregistrements suivants :
    1-1- (1 ; beurre ; 0,50 ; 5 ; 3) #voir attributs dans MCD
    1-2- (2 ; farine ; 0,75 ; 5 ; 2) #voir attributs dans MCD
    2- Table Ingrédient_liquide contient les enregistrements suivants :
    2-1- (1 ; lait ; 0,66 ; 5 ; 4) #voir attributs dans MCD
    2-2- (2 ; huile ; 0,2 ; 5 ; 3) #voir attributs dans MCD
    3- Table Action contient les enregistrements suivants :
    3-1- (1 ; mélanger) #voir attributs dans MCD
    3-2- (2 ; couper) #voir attributs dans MCD
    3-3- (3 ; ajouter) #voir attributs dans MCD
    Ainsi, le chef (1 ; Jean ; Dupont) créer une nouvelle Recette (1 ; ma-recette) composée de Etape et selon mon MCD (et MPD) joints, on aura :

    1- Etape (id_etape = 1 ; id_action = 1 ; id_recette = 1) #pour mélanger
    2- Etape (id_etape = 2 ; id_action = 2 ; id_recette = 1) #pour couper
    3- Etape (id_etape = 3 ; id_action = 3 ; id_recette = 1) #pour ajouter


    Si on considère uniquement Etape (id_etape = 1 ; id_action = 1 ; ; id_recette = 1), on a également :

    1- Composer_etape-liquide (id_ingrédient-lq = 1 ; id_etape = 1 ; volume_ingrédient-lq_etape = ?)
    2- Composer_etape-solide (id_ingrédient-sd = 2 ; id_etape = 1 ; masse_ingrédients-sd_etape = ?)


    Ainsi, l'étape dont id_etape = 1 sera "mélanger volume lait masse farine" sauf qu'à ce stade et comme vous pouvez le constater en rouge, le Chef n'est pas supposé fixer ni le volume du lait ni la masse de farine, l'étape donc doit être : "mélanger lait farine". En effer, c'est au commis de paramétrer cette Recette afin d'en faire une Préparation. Le paramétrage se fera lorsque le commis entrera par exemple la masse totale du gâteau qu'il souhaite préparer à une date définie, la masse de la farine à utiliser ainsi que le volume de lait seront automatiquement caculer selon les coefficient de chacun des ingrédients solides et liquides, par exemple : pour 2 kg de gâteau :

    1- masse farine = 2 * 0,75 #voir coefficient_ingrédient-sd pour farine ci-haut
    2- volume lait = 2 * 0,66 #voir coefficient_ingrédient-lq pour lait ci-haut


    Ces paramètres seront ensuite sauvegarder dans la table que je n'ai pas réussi à générer et qui selon moi devra avoir la structure suivante :

    1- (id_préparation ; id_commis ; id_recette ; id_etape ; id_ingrédient-lq ; quatité_préparation-recette ; masse_ingrédient-lq_etape ; date).
    2- (id_préparation ; id_commis ; id_recette ; id_etape ; id_ingrédient-sd ; quantité_préparation-recette ; masse_ingrédient-sd_etape ; date).


    Ainsi la Recette du gâteau définie par le Chef sera ma_recette = mélanger lait farine et chaque commis en fera une préparation selon les quantités de gâteau requises (et donc de farine et de lait) à une date donnée, ainsi on obtient des Paparation de Recette du genre :

    1- Préparation 1 de la Recette 1 quantité = 2 kg fixée par le commis 1 au 17/12/10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (1 ; 1 ; 1 ; 1 ; 1 ; 2 ; 2 ; 1,5 (=2*0,75) ; 17/12/10)
    (1 ; 1 ; 1 ; 1 ; 1 ; 1 ; 2 ; 1,32 (=2*0,66) ; 17/12/10)
    2- Préparation 2 de la Recette 1 quantité = 1 kg fixée par le commis 1 au 14/01/11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (2 ; 1 ; 1 ; 1 ; 1 ; 2 ; 1 ; 0,75 (=1*0,75) ; 14/01/11)
    (2 ; 1 ; 1 ; 1 ; 1 ; 1 ; 1 ; 0,66 (=1*0,66) ; 14/01/11)
    J'espère que j'ai réussi à expliquer mes objectif.

    Je reste diponible et complètement ouvert à toutes les propositions, même celles qui touche à la structure de mon MCD

    Merci
    Images attachées Images attachées   

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2011, 13h23
  2. Réponses: 9
    Dernier message: 08/10/2010, 08h39
  3. [AC-2007] Relations entre tables contenant plusieurs clés primaires
    Par AnnaPouet dans le forum Modélisation
    Réponses: 7
    Dernier message: 12/07/2010, 11h39
  4. Création de table avec plusieurs clés primaires
    Par jeanjean0403 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/12/2007, 15h10
  5. [postgresql]creer une table avec plusieurs clés primaire??
    Par perlgirl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2004, 17h24

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