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 :

Gestion de stock [MCD]


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut Gestion de stock
    salut,
    Dans le cadre de mon stage au sein d'une entreprise industrielle, on m'a proposé de gérer le stock de maintenance.
    La particularité de mon sujet c'est que les clients de ce magasin sont représentés ici par 4 entreprises A, B, C et D qui font partie d'un holding.
    Le stock appartient et se situe au sein de l'E/se A et il est géré par au moins deux personnes qui alternent.
    Les emplacements des articles sont déterminés par Rayon=> Colonne=> Niveau .
    Les gérants de ce magasin peuvent effectuer des commandes d'articles.

    Après une petite réflexion, j'ai décidé de partager avec vous le MCD que j'ai réalisé pour cette étude de cas et j'aimerai bien qu'on le discute ensemble.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bonjour,

    Il serait opportun que vous fournissiez vos règles de gestion "correctement" formulées. Ici un exemple basé sur votre MCD pour l'association qui relie les entités article et rayon :
    Un article est stocké dans un (seul) rayon et un rayon stocke un ou plusieurs articles.
    En attendant, voici quelques remarques après un rapide survol :

    • Une commande n'est-elle pas fournie par un fournisseur ?
    • Quid d'une commande qui ne serait pas entièrement livrée ? (ex : commande de 500 articles X mais seulement 400 sont livrés par le fournisseur pour une quelconque raison)
    • Vous associez article et rayon mais si j'ai bien compris votre brève explication, ne connaître que le rayon dans lequel est stocké un article ne fournit pas son emplacement précis. Il va donc encore falloir au magasinier parcourir le rayon de long en large afin de trouver dans quelle colonne et à quel niveau il est situé.
      Par conséquent, j'associerais plutôt article à niveau. Depuis le niveau, on peut remonter facilement jusqu'au rayon.
    Kropernic

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Re-salut,
    Merci Kropernic de m'avoir répondu
    J'étais un peu pressé du temps lors du partage de ce message avec vous du coup je n'ai pas cité mes règles de gestion. DSL

    J'explique un petit peu cette situation avant de passer aux règles de gestion.
    [ mon application est dédié au responsable du magasin qui n'a pas un contact direct avec le fournisseur. Parmi ses tâches, il effectue des commandes d'articles en proposant, d'après son expérience, des noms de fournisseurs au service d'achat qui s'en charge. En plus de ça, il gère bien entendu les entrées et les sorties] .

    J'ajoute quelque informations:
    -On a 4 clients : A, B, C et D. Ce sont toutes des entreprises
    -Le client qui fait la demande d’un article donné est l’entreprise A (La seule qui commande)
    -Le temps entre la livraison des fournitures et son dépôt dans le stock est considéré comme nul ! (Pour cela on considère que le temps de livraison est équivalent au temps de l'entrée de l'article au stock).
    -La date de sortie d’un article du stock c’est sa date d’utilisation par un client.


    Concernant les règles de gestion sur lesquelles je me suis basé pour réaliser mon MCD, les voilà:

    -On tient compte de l’historique

    -Il est possible qu’un même produit vienne de différents fournisseurs.
    -Un article peut ne pas être utilisé comme il peut être utilisé par tous les clients.
    - Un utilisateur de cette application (Responsable du magasin ou d'autres techniciens) peut effectuer plusieurs commandes comme il peut ne rien commander.
    - Une commande est effectuée par un seul utilisateur.
    - Un article est concerné par zéro ou plusieurs commandes (on peut commander le même article aujourd'hui et demain).
    - Un article se trouve dans un seul rayon qui peut contenir plusieurs articles.
    - Un rayon contient plusieurs colonnes et une colonne appartient à un seul rayon
    - Une colonne contient plusieurs niveaux et un niveau appartient à une seule colonne.

    -------------
    A propos de vos remarques, mon premier MCD contenait l'association que vous avez cité ( article "se trouver" niveau) mais j'ai trouvé du mal avec deux attributs de l'entité niveau, quantité_stock et date_stock, je me suis dit qu'ils sont liés en premier lieu ==> il faut donc créer une nouvelle entité mais ici un problème s'est posé c'est la cardinalité . Puis, j'ai dit qu'il faut les mettre dans l'association puisqu'ils sont liés aussi à l'article mais comme l'association est un à plusieurs, je vais les perdre lors de la création des tables . Du coup j'ai pris l'autre chemin et on peut savoir à quel niveau se trouve un tel article grâce aux clés étrangères (les relations père-fils).

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par RZinaoui Voir le message
    Merci Kropernic de m'avoir répondu
    Vu toute l'aide que j'ai reçue ici, il est normal que j'aide à mon tour

    Citation Envoyé par RZinaoui Voir le message
    J'explique un petit peu cette situation avant de passer aux règles de gestion.
    [ mon application est dédié au responsable du magasin qui n'a pas un contact direct avec le fournisseur. Parmi ses tâches, il effectue des commandes d'articles en proposant, d'après son expérience, des noms de fournisseurs au service d'achat qui s'en charge. En plus de ça, il gère bien entendu les entrées et les sorties] .
    Si je vous suis, ce sera donc une application avec un seul et unique utilisateur qui encodera tout lui-même. C'est bien cela ? Si oui, pourquoi avoir une entité USER dans ce cas ?

    Citation Envoyé par RZinaoui Voir le message
    J'ajoute quelque informations:
    -On a 4 clients : A, B, C et D. Ce sont toutes des entreprises
    -Le client qui fait la demande d’un article donné est l’entreprise A (La seule qui commande)
    A quoi servent les autres clients si le client A est le seul à effectuer des commandes ?

    Citation Envoyé par RZinaoui Voir le message
    -Le temps entre la livraison des fournitures et son dépôt dans le stock est considéré comme nul ! (Pour cela on considère que le temps de livraison est équivalent au temps de l'entrée de l'article au stock).
    Il y a un problème avec cette phrase. Mais si je lis entre les lignes, je comprends que, une fois que la commande est encodée, on considère que l'article est en stock. Est-ce cela que vous vouliez dire ?

    Citation Envoyé par RZinaoui Voir le message
    -La date de sortie d’un article du stock c’est sa date d’utilisation par un client.
    Citation Envoyé par RZinaoui Voir le message
    Concernant les règles de gestion sur lesquelles je me suis basé pour réaliser mon MCD, les voilà:

    -On tient compte de l’historique

    -Il est possible qu’un même produit vienne de différents fournisseurs.
    -Un article peut ne pas être utilisé comme il peut être utilisé par tous les clients.
    - Un utilisateur de cette application (Responsable du magasin ou d'autres techniciens) peut effectuer plusieurs commandes comme il peut ne rien commander.
    - Une commande est effectuée par un seul utilisateur.
    - Un article est concerné par zéro ou plusieurs commandes (on peut commander le même article aujourd'hui et demain).
    - Un article se trouve dans un seul rayon qui peut contenir plusieurs articles.
    - Un rayon contient plusieurs colonnes et une colonne appartient à un seul rayon
    - Une colonne contient plusieurs niveaux et un niveau appartient à une seule colonne.
    Plusieurs remarques ici :

    1. Vous dites au début que cette application est dédiée au magasinier et ici vous parlez de plusieurs utilisateurs
    2. Il va falloir revoir la formulation de vos règles de gestions. Une règle de gestion "bien" formulée permet de modéliser très facilement. Voici un lien qui vous y aidera



    Citation Envoyé par RZinaoui Voir le message
    -------------
    A propos de vos remarques, mon premier MCD contenait l'association que vous avez cité ( article "se trouver" niveau) mais j'ai trouvé du mal avec deux attributs de l'entité niveau, quantité_stock et date_stock, je me suis dit qu'ils sont liés en premier lieu ==> il faut donc créer une nouvelle entité mais ici un problème s'est posé c'est la cardinalité . Puis, j'ai dit qu'il faut les mettre dans l'association puisqu'ils sont liés aussi à l'article mais comme l'association est un à plusieurs, je vais les perdre lors de la création des tables . Du coup j'ai pris l'autre chemin et on peut savoir à quel niveau se trouve un tel article grâce aux clés étrangères (les relations père-fils).
    Vite fait, voici (voir pièce jointe) ce que je ferais avec une architecture de rayon telle que la votre.
    Cette image montre un MLD car je n'ai pas d'outil de modélisation qui me satisfait pour produire un MCD.
    Au niveau des règles de gestion, cela donne :

    • Un rayon contient plusieurs colonnes et une colonne est contenue par un rayon
    • Un colonne possède plusieurs niveaux et un niveau est possédé par une colonne
    • Un niveau stocke plusieurs articles et un article est stockée par un niveau

    De ce que j'ai compris de vos explications, cela répond bien à votre architecture de stockage des articles.


    Ensuite, pour savoir précisément où se trouve un article X, une simple requête suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT
            RAY.RAY_ID,
            COL.COL_ID,
            NIV.NIV_ID
    FROM
            T_RAYON_RAY RAY
                INNER JOIN T_COLONNE_COL COL
                    ON RAY.RAY_ID = COL.RAY_ID
                    INNER JOIN T_NIVEAU_NIV NIV
                        ON COL.COL_ID = NIV.COL_ID
                        INNER JOIN T_ARTICLE_ART ART
                            ON NIV.NIV_ID = ART.NIV_ID
    WHERE
            ART_ID = X
    Où X est l'id de l'article recherche.
    Avec cette requête, on sait donc précisément à quel niveau de quelle colonne de quel rayon se trouve l'article voulu.
    Images attachées Images attachées  
    Kropernic

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Mes répliques sont en noir foncé ..

    Si je vous suis, ce sera donc une application avec un seul et unique utilisateur qui encodera tout lui-même. C'est bien cela ? Si oui, pourquoi avoir une entité USER dans ce cas ?

    Non, il y'a plusieurs utilisateurs. Cependant, elle n'est utilisée que par une seule personne pendant une durée bien déterminée (8 heures pour chaque personne) c'est pourquoi je ai écrit "utilisateur" au singulier. Il n'y a qu'un seul PC au magasin.

    A quoi servent les autres clients si le client A est le seul à effectuer des commandes ?

    C'est nécessaire de savoir quel client a utilisé un tel article dans quelle date. J'ai dit que l'entreprise A est la seule qui commande pour éclaircir les choses mais cela ne va pas influencer je crois notre étude.

    Il y a un problème avec cette phrase. Mais si je lis entre les lignes, je comprends que, une fois que la commande est encodée, on considère que l'article est en stock. Est-ce cela que vous vouliez dire ?

    Je m'explique, une fois la commande est arrivée à l'usine on la transporte immédiatement au magasin du coup on peut dire que le temps de livraison= le temps de la mise en stock des articles.



    Je cite quelque objectifs derrière la conception de cette application:
    - Déterminer le nombre et le prix total des articles utilisés par chaque client (entreprise).
    - Savoir combien d'articles existent-ils dans le stock dans une date donnée.
    - Imprimer les états des commandes effectuées par les utilisateurs.
    ...


    J'espère que vous avez une vision claire sur ce que je veux dire. Je sais que j'ai un problème de communication et de transmettre un message ... mais si vous avez une intervention à propos de quoique ce soit je serai à votre disposition pour y répondre.

    Voilà ci-joint un mini-MCD pour les entités article, niveau. J'ai pensé à ce que vous avez dit ... après une large réflexion je me suis amené à une relation ternaire.
    Images attachées Images attachées  

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


    En dehors du sujet proprement dit...

    Utilisation du bouton

    Le bouton « Citer » permet de mieux mettre en évidence vos réponses aux questions que nous vous posons.

    Par exemple, pour répondre à la question suivante de Kropernic (message #4) :
    « Si je vous suis, ce sera donc une application avec un seul et unique utilisateur qui encodera tout lui-même. C'est bien cela ? Si oui, pourquoi avoir une entité USER dans ce cas ? »
    Cliquez sur ce bouton (toujours message #4). En conséquence de quoi, vous avez droit à une fenêtre dont le contenu est le suivant :




    Dans votre message en réponse, mettez à profit la balise QUOTE :



    ___________________

    Pour en venir au sujet qui vous préoccupe.

    Afin d’éviter les ambiguïtés, dans ce qui suit, je nommerai Dubicobit l’entreprise dans laquelle vous faites votre stage.


    Citation Envoyé par RZinaoui Voir le message
    salut,
    Dans le cadre de mon stage au sein d'une entreprise industrielle, on m'a proposé de gérer le stock de maintenance.
    La particularité de mon sujet c'est que les clients de ce magasin sont représentés ici par 4 entreprises A, B, C et D qui font partie d'un holding.
    Le stock appartient et se situe au sein de l'E/se A.
    Quand vous écrivez « les clients de ce magasin », je suppose qu’il n’y a qu’un magasin et que Dubicobit et le magasin ne font qu’un. Est-ce bien cela ? Dubicobit et A sont bien la même chose ?

    Merci d’éviter de nous compliquer la lecture, écrivez : « au sein de l’entreprise A » plutôt que « au sein de l'E/se A ».


    D’une façon générale, on modélise les livraisons car celles-ci ne sont pas toujours satisfaites en une seule fois. En ce sens, Krop vous a posé une question précise :
    Citation Envoyé par Kropernic Voir le message
    Quid d'une commande qui ne serait pas entièrement livrée ? (ex : commande de 500 articles X mais seulement 400 sont livrés par le fournisseur pour une quelconque raison)
    Question qui n’a pas eu de réponse satisfaisante.

    A mon tour je pose donc la question : Comment les choses se passent-elles si un client fait une demande de 500 schmilblicks et que l’usine ne peut en fournir que 400 ? Dans votre cas les commandes sont-elles systématiquement satisfaites en une fois ? Merci de préciser ce qu’il en est.

    J’ai utilisé le mot « usine » parce que vous avez écrit :
    Citation Envoyé par RZinaoui Voir le message
    une fois la commande est arrivée à l'usine
    Mais quelle est cette usine qui est destinataire d’une commande, est-ce l’usine de Dubicobit ? C’est ce que laisse sous-entendre ce que vous avez écrit.

    Au demeurant, je prends note que, dans votre MCD, il y a bien entre FOURNISSEUR et ARTICLE une relation porteuse d’une date d’entrée par article, mais qu’en est-il de la quantité correspondante ? Est-ce bien l’attribut quantité_stock de l’association ternaire ETRE_STOCKÉ (cf. votre dernier MCD) qui est incrémenté à l’occasion d’une entrée ? Cette remarque vaut dans le sens inverse (décrémentation) pour les sorties, puisque votre association UTILISER est porteuse seulement d’un attribut date_sortie.


    En passant, pour les termes que vous utilisez fixez-vous un vocabulaire et n’en changez pas. Par exemple, si les termes produit et article sont interchangeables, n’en conservez qu’un sinon on est amené à chercher ce qui les différencie, n’oubliez pas qu’à part vous, personne ici ne connaît les habitudes de Dubicobit. Bien sûr, il nous arrive à tous d'utiliser par mégarde des termes différents (et pas forcément synonymes) quand un seul suffit, il n'en demeure pas moins que nous devons être vigilants à ce sujet.


    Citation Envoyé par RZinaoui Voir le message
    je me suis amené à une relation ternaire.
    N’oubliez pas que cette ternaire donne ensuite lieu à une table dont la clé est le triplet {id_article, id_niveau, date_id} : on peut donc douter de la pertinence de cette ternaire, puisqu’elle signifie notamment qu’à une date donnée on peut trouver un article dans plusieurs niveaux (donc dans plusieurs rayons, pourquoi pas ?)


    Si les règles sont les suivantes :

    Rx — Un article est rattaché à un seul niveau (la date de rattachement de l’article au niveau n’est pas à prendre en compte) ;

    Ry — On doit savoir à quelle date la quantité d’un article du stock a changé ;

    Alors la partie correspondante du MCD est la suivante :




    MLD correspondant :




    Dans le style utilisé par Krop (MySQL Workbench) :



    Remarque : concernant l’attribut StockDate, au besoin vous pouvez utiliser un timestamp (date et heure).

    A vous de préciser les règles du jeu exactes si celles que j'ai fournies ne conviennent pas.

    Bon courage.
    (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.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Salut

    Avant de continuer notre discussion à propos de ce sujet, je veux juste vous remercier du soutien remarquable que vous apportez à toute personne demandant de l’aide et cherchant l’information et surtout votre grande patience, un grand merci à vous nos chers experts .

    Après les interventions ci-dessus, j’avoue ne pas avoir réussi de vous transmettre mes idées et de vous expliquer … Pour remédier à ce problème de communication qui nous s’est posé, je vais essayer d’accompagner mes phrases avec des schémas significatifs dans mon prochain message ...

    Cordialement

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Pour mener à bien cette discussion, j'ai décidé de partager avec vous l'analyse de l'existant toute entière que j'ai faite dès le début de mon stage.

    Description du projet: Ce projet consiste à concevoir une application pour gérer le stock du magasin de maintenance dans lequel le travail se fait en shifts (8 heures par personne). Le responsable travaille généralement le matin (8 heures), après il y’a son adjoint qui arrive avant son départ. Le soir ou le week-end il y’a un remplaçant affecté par l’administration qui n’aura pas d’accès à l’application.

    J'ai essayé de diviser cette étude en deux parties:
    ---------------------
    I- La circulation de l’information dans un circuit local bien déterminé et la livraison des articles. (Voir la première photo ci-joint nommé: vision globale)
    Le flux d’information représenté sur le schéma est le suivant : La personne gérant le stock (Le responsable ou son adjoint) effectue en un moment donné une demande d’achat d’articles en cas de besoin, cette demande contient les informations suivantes :
    -Les codes des articles demandés.
    -Proposition d’un fournisseur (connu par code_fournisseur)
    -La quantité demandée.
    -La date souhaitée (On souhaite recevoir ces articles au plus tard le jour/mois/année).
    -La date de la demande d’achat (Le jour où elle a été écrite)
    -Code de la demande.

    Chaque article dispose des informations suivantes :
    -Code de l’article
    -Désignation
    -Prix unitaire
    -Type de l’article (organe hydraulique, pneumatique, plomberie, électricité, mécanique, droguerie, sécurité, …).


    Règles de gestion N°1 :
    -Une demande d’achat peut contenir plusieurs articles et un article peut se trouver dans plusieurs demandes d’achats.

    Le service d’achat se charge de la communication avec les fournisseurs. Ce qui importe pour nous c’est l’étape qui suit l’accord entre eux : La livraison.

    Les fournisseurs ne sont pas forcément des usines, ils peuvent être des drogueries, des revendeurs ou tout autre type. Dans cette phrase dite précédemment : ‘’Une fois la commande est arrivée à l’usine ‘’, je voulais dire l’usine de Dubicobit.

    Règle de gestion N°2 :
    -Un fournisseur peut livrer plusieurs articles et un article peut être fourni par plusieurs fournisseurs.

    informations supplémentaires :
    -Selon l’état du stock du fournisseur, la livraison peut être totale ou partielle.
    -La date de livraison peut ne pas être la date souhaitée.
    -On peut considérer que le temps entre la livraison des articles et leur mise en stock est nul !

    Concernant l’entrée des articles, on doit tenir compte des informations suivantes :
    -La date d’entrée (Elle correspond à la date de livraison).
    -La quantité livrée.
    -Les codes des articles livrés.
    -La forme d’entrée d’un article donné
    -Les codes des fournisseurs qui ont fait la livraison.


    informations supplémentaires:
    -La quantité livrée et quantité_stock ne sont pas la même chose
    -Il y’a des articles qui entrent au stock sous la forme d’un fût (huiles), Paquet (électrodes de soudage), Rouleau (câbles) ... et en sortent sous une autre forme : par litre pour les huiles, par baguette pour les électrodes de soudage, par mètre pour les câbles. A la fin il faut qu'on aie l'égalité .

    On passe maintenant à la deuxième partie.
    ---------
    II- Le magasin (voir la photo ci-joint nommé magasin)

    Après avoir reçu les articles livrés par les fournisseurs, on les stocke chacun dans un niveau particulier.
    Règle de gestion N°3 :
    -Un article peut être stocké dans un seul niveau et un niveau peut contenir plusieurs articles.

    Puisque l’identifiant du niveau nous dirige directement vers l’emplacement de l’article, on ne va pas ajouter des tables pour rayon et colonne.

    Informations importantes :
    -Tout niveau est caractérisé par un code. Par exemple Aa1 signifie le rayon A, la colonne a, premier niveau.
    -Chaque niveau est caractérisé également par un stock initial que l’on détermine soit le jour où l’on a fait le premier inventaire ou bien le jour d’utilisation de cette application pour la première fois.
    -Il est caractérisé aussi par un stock minimal, c’est le nombre minimal des articles qui doivent rester dans un niveau.
    -Finalement il y’a le stock final ou actuel (ce que j’ai appelé au début de notre discussion quantité_stock et qui diffère de la quantité livrée) . Il est mis à jour en fonction des opérations d’entrées et de sorties.
    -On doit savoir à quelle date la quantité d’un article du stock a changé.


    Concernant les articles de sortie, ils sont destinés normalement aux engins de Dubicobit mais ceux des entreprises B, C et D peuvent également les utiliser.

    Au début de cette discussion j’ai dit que "client ", qui était en relation avec article via l’association utiliser, peut prendre 4 valeurs : Dubicobit, B, C et D. Cela pouvait certainement nous informer quelle est l’entreprise qui a utilisé un tel article mais on ne peut pas déterminer l’engin qui a bénéficié de ce service. Cependant, si l’on connaissait l’engin qui a utilisé un article (ce qui est demandé), on pourrait connaitre l’entreprise à qui il appartient.

    Dorénavant, on va utiliser le nom d’engin au lieu de client.

    Pour la sortie des articles, on doit tenir compte des informations suivantes :
    -La date de sortie.
    -La quantité sortie.
    -Les codes des articles sortis.
    -La forme de sortie d’un article
    -Les matricules des engins qui vont consommer ces articles

    La forme de sortie a été déjà expliquée au-dessus.
    Règle de gestion N°4:
    -Un engin peut consommer plusieurs articles, un article peut être consommé par plusieurs engins.

    Règle de gestion N°5 :

    -Chaque engin appartient à une seule entreprise, chaque entreprise dispose de plusieurs engins.

    informations supplémentaires:
    -Un engin est caractérisé par un matricule.
    -Une entreprise est caractérisée par un identifiant (Dubicobit ou B ou C ou D), réseau social et un chiffre d’affaire.

    [Si on veut développer encore et encore, on peut ajouter une table appelée Axe associée à l’engin (Un axe appartenant à un seul engin et un engin contient plusieurs axes). Par exemple, si on prend un engin donné (un camion par exemple) ayant besoin d’une pompe, la valeur que va prendre l’axe c’est moteur. (Axe c’est comme l’emplacement où il sera monté l’article)]


    Excusez moi d'être lourd ...

    Merci infiniment

    Cordialement
    Images attachées Images attachées   

  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 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir RZinaoui,


    Je vois que vous avez bien développé votre sujet. Ce soir je me suis plutôt occupé des problèmes de Kropernic, mais je ne vous oublie pas,

    A bientôt.
    (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
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je ne vous ai pas oublié non plus.

    C'est juste que j'ai également mes propres problèmes à régler
    Kropernic

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Bonjour chers experts
    J'ai cru le contraire
    Je vais essayer de partager le dernier MCD que j'ai réalisé pour cette étude de cas afin de le comparer avec les vôtres.

    Un grand merci ^^

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Comme je le disais précédemment, je ne vous ai pas oublié !

    J'ai relu avec attention votre explication détaillée et voici le MLD auquel je suis arrivé (cfr. pièce jointe nommée "STOCK.png").
    Nom : STOCK.png
Affichages : 39196
Taille : 73,8 Ko
    N.B. : A vous de définir le type de donnée approprié pour les colonnes dont le type est VARCHAR(45). Par souci d'économie (et par fainéantise, avouons le), je désignerai les tables par le trigramme qui suffixe leur nom.
    Quelques explications par rapport à la table FOR:
    Cette table désigne les formes différentes sous lesquelles se présentent les articles (paquet, bidon, litre, barre, mètre, kg, etc.). A y repenser, elle aurait peut-être dû s'appeler T_UNITE_UNI.

    Puisque les articles entrent et sortent du stock sous une forme différente, il fallait un moyen de gérer cela. C'est ce rôle que joue les table FOR et CON. FOR nous renseigne sur les formes existantes et CON nous explique comment passer de l'une à l'autre. Exemple : 1 baril = 158.9873 litre.
    Pour le reste, je pense que c'est assez classique. On a donc :

    • La table ART pour les articles avec leur type (TPA), le niveau où ils sont rangés (NIV) et leur forme de stockage (FOR).
    • La table DEM pour les demandes avec l'utilisateur qui l'a faite (USR).
    • Pour chaque demande, on sait quels sont les articles demandés (JAD), en quel quantité et quel fournisseur (FOU) est conseillé.
    • La table ARL nous renseigne sur ce qui a été livré. J'ai supposé qu'un article demandé pouvait être livré en plusieurs fois, d'où l'ajout de ARL_ID. Cette table nous informe sur la forme dans laquelle l'article est livré ainsi que le fournisseur qui l'a livré (qui peut être différent de celui conseillé d'après ce que j'ai compris).
    • De l'autre côté du diagramme, nous avons la table UTI qui nous renseigne sur quel engin (ENG) a utilisé quel article (JAU).
    • Et chaque engin appartient bien sûr à une entreprise (ENT).

    Avec ces tables-ci, si on suppose que l'on démarre avec un magasin vide, c'est déjà suffisant. Evidemment, on ne démarre pas avec un magasin vide (ce serait trop facile). Pour palier à cela, je vois 2 solutions :


    1. On "triche" en créant un fournisseur au nom du magasin lui-même et on fait la demande et livraison adéquate pour remplir le magasin avec le stock initial des articles
    2. On ajoute les colonnes ART_INITIAL et ART_INITIAL_DATE qui nous renseigne sur le stock initial de l'article et la date à laquelle il a été déterminé.

    Quand au stock courant, il est tout à fait possible de déterminé via une requête le stock d'un article à une date D. Vous donc savoir non seulement l'état du stock à la date du jour mais également son état il y a un an (à condition qu'un an d'exploitation ce soit écoulé bien sûr) si vous le souhaitez. Vous pouvez-même reconstituer l'évolution complète du stock d'un article entre date D et une date D' (nul doute que ce genre de demande risque fort d'arriver).

    Il me reste tout de même une question par rapport au prix unitaire (colonne ART_PU). Est-ce bien le prix unitaire auquel le magasin vend (via la table UTI) les articles aux entreprises propriétaires des engins.
    Si oui, pas de souci.
    Si non, et qu'il s'agit du prix unitaire des fournisseurs, il y a un souci car il n'a rien à faire là. Et vu que c'est le service d'achat qui s'occupe de l'achat, je pense que le prix du fournisseur ne nous intéresse pas.

    P.S. :
    Je ne devrais peut-être pas en parler mais j'ai beaucoup hésité à ajouter la colonne ART_COURANT pour y calculer "en live", via des triggers sur les tables ARL et JAU, le stock de chaque article. Car évidemment, à chaque fois que le conducteur d'un engin va venir demander une quantité d'un article au magasin, il va d'abord falloir vérifier que la quantité en stock est supérieur ou égale à la quantité demandée (et déclencher une alerte si le seuil minimal est atteint pour que le responsable fasse une demande au service d'achat). Or pour calculer le stock actuel d'un article, il faut en fait parcourir tout son historique depuis le commencement. Au début, pas de problème bien sûr. Mais après quelques temps (suivant la fréquence des entrées et sorties), le temps de calcul va s'allonger et risque de rendre les temps de réponses inacceptable pour l'utilisateur de l'application sous-jacente. Voilà pourquoi j'ajouterais la colonne ART_COURANT. Mais je ne le pas présentée sur le MLD car il s'agit là déjà de dénormalisation et ce n'est à réaliser que sur base de prototype en comparant leur performance respective (fsmrel vous expliquera cela bien mieux que moi). J'attends néanmoins avec impatience de connaître son avis sur cette colonne.

    P.P.S. : Je me rends compte à la relecture de mon explication que la colonne ART_COURANT peut également résoudre le problème de stock initial en permettant d'indiquer un stock à la création de l'article et de faire l'économie de la colonne ART_INITIAL.

    Voilà, j'espère avoir été clair. Si vous avez des questions, n'hésitez pas.
    Kropernic

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Salut !
    Je viens de remarquer que vous travaillez avec une méthode de conception différente de celle qu'on a vue cette année en matière de conception des systèmes d'informations. Nous avons travaillé avec Merise tandis que vous travaillez avec ALM. Je ne savais pas si on allait obtenir la même chose enfin de compte ou non mais en lisant vos dernières remarques (P.S et P.S.S), j'ai eu une réponse: Oui !

    Avant de continuer notre discussion, j'aimerai bien annoncer les objectifs principaux derrières la conception de cette application:
    • Eviter la rupture de stock en déclenchant une alerte une fois le stock minimal est atteint
    • Calculer le prix total que doit l'entreprise Dubicobit aux autres entreprises profitant du stock


    Revenons maintenant à votre dernière réponse Mr Kropernic. Je commence par répondre à vos questions, après je prends mon tour pour vous en poser quelques unes à propos de votre MLD. Je vais écrire directement les réponses car je ne maîtrise pas encore le bouton citer

    - Le fournisseur proposé par l'utilisateur de cette application peut être différent de celui qui a fait la livraison.
    - On démarre avec un magasin non vide (il y'a un stock initial)
    - Pour le prix unitaire, il s'agit de celui des fournisseurs. On en a besoin pour calculer le prix total que doit Dubicobit aux autres entreprises utilisant son stock.


    Voilà mes questions en supposant qu'il y'a une ressemblance entre Merise et ALM en terme de règles de normalisation et de la génération du MLD à partir du MCD.

    1. Pour la dépendance fonctionnelle, je crois qu'elle est vérifiée entre id_article et type_article car pour un article donné il existe un seul type. Pourquoi alors vous avez crée une nouvelle entité appelée type d'article ?
    2. Pour l'association liant les entités engin et article, elle contient un attribut appelé date_sortie. D'après la règle de la dépendance fonctionnelle, pour une valeur de l'identifiant de l'association "utiliser" {matricule, code_article}, date_sortie doit avoir une seule valeur or ce n'est pas le cas car un engin peut utiliser le même article plusieurs fois ! d'où la nécessité de créer une nouvelle entité appelée date de sortie. Qu'en pensez vous ? Puis si vous le permettez, comment vous avez obtenu et construit la table JAU ? d'après mes connaissances, si on a une relation ternaire comme j'ai supposé exister entre article engin et date_sortie, on doit créer une entité comportant les 3 identifiants des celles participant à cette association.
    3. Pour la table JAD, c'est le résultat d'une relation ternaire existant entre les entités Demande d'achat, Fournisseur et Article. Est-ce bien ça ? Si oui, comment vous avez fait pour la lier à la table ARL ? car on s'est jamais présenté devant un tel cas avec Merise ou bien c'est réservé à ALM ?
    4. Pour les entités forme et conversion, je n'ai pas compris comment vous les avez construit et comment vous allez vous en servir ?


    Pour bien assimiler ce que je viens de dire, vous pouvez faire un coup d'oeil sur mon MCD (voir pièce jointe nommé MCD) et me dire, s'il vous plait, les erreurs que j'ai commise s'il y'en a.

    Comme j'ai écrit au-dessus, parmi les objectifs de cette application c'est d'éviter la rupture de stock en se basant sur l'information portée par stock_actuel. Ma question c'est : est ce qu'on pourrait récupérer cette informations à partir de: stock initial, quantité_ entrée, quantité_sortie, date_entrée, date_sortie ?
    P.S: Pour les formes d'entrées et sorties des articles, je les ai utilisés comme attributs dans les entités contenir (entrée des articles) et utiliser (sortie des articles).

    On attend également l'intervention de fsmrel avec impatience.
    Images attachées Images attachées  

  14. #14
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir les lions,


    Citation Envoyé par RZinaoui Voir le message
    Nous avons travaillé avec Merise tandis que vous travaillez avec ALM.
    Je suppose que vous voulez dire UML (Unified Modeling Language, ALM signifiant pour sa part : Application Lifecycle Management et ULM : ultra léger modélisé ). En fait, le diagramme de Krop est ce que les merisiens appellent un MLD, pour lequel la notation retenue ici pour les associations est celle d’UML. Comme déjà précisé, l’outil est MySQL Workbench (qui offre l’avantage d’être gratuit).


    Citation Envoyé par RZinaoui Voir le message
    Pourquoi alors vous avez crée une nouvelle entité appelée type d'article ?
    Krop a bien fait. Vous avez fourni une liste de noms de types d’articles :
    organe hydraulique, pneumatique, plomberie, électricité, mécanique, droguerie, sécurité, …

    L’usage en modélisation est d’attribuer à chaque type d’article une valeur d’identifiant : voyez ce que dit Tabourier à ce propos (et que je nommerai maintenant Principe de Tabourier).

    L’entité-type ARTICLE sera donc dotée de 2 attributs supplémentaires : TypeArtId (identifiant du type d’article) et TypeArtLibelle (libellé du type d’article). Si {ArtId} est identifiant de l’entité-type ARTICLE, celle-ci vérifie désormais les dépendances fonctionnelles suivantes :

    {ArtId} -> {TypeArtId} -> {TypeArtLibelle}
    D’où un viol de la 3NF... Pour éviter un pareil drame, on débarrasse la table ARTICLE de l’attribut TypeArtLibelle en appliquant le théorème de Heath (que Krop doit commencer à bien connaître, tout comme la position de Tabourier... ), conduisant à la mise en œuvre d’une table TYPE_ARTICLE :
    TYPE_ARTICLE {TypeArtId, TypeArtLibelle}

    Citation Envoyé par RZinaoui Voir le message
    Pour le prix unitaire, il s'agit de celui des fournisseurs.
    Vous avez fait figurer ce prix dans l’en-tête de l’entité-type ARTICLE, mais par référence à votre 1er MCD, un article donné peut être fourni par plusieurs fournisseurs. Si ce prix peut être différent selon les fournisseurs, il faut représenter les choses ainsi :



    L’association FOURNIR représente simplement le catalogue des articles proposés par les fournisseurs.

    Notez les identifiants alternatifs {ArticleCode} et {FournisseurCode} engendrés par l’application du principe de Tabourier, puisque les identifiants primaires {ArticleId} et {FournisseurId} ne sont pas du ressort de l’utilisateur mais du système (disons que leurs valeurs sont de banals auto-incréments ou hachages et Cie), alors que l’utilisateur fait ce qu’il veut de ses identifiants alternatifs lesquels sont soumis seulement à la règle d’unicité caractéristique des identifiants au sens Merise.

    Citation Envoyé par RZinaoui Voir le message
    Le flux d’information représenté sur le schéma est le suivant : La personne gérant le stock (Le responsable ou son adjoint) effectue en un moment donné une demande d’achat d’articles en cas de besoin, cette demande contient les informations suivantes :
    -Les codes des articles demandés.
    -Proposition d’un fournisseur (connu par code_fournisseur)
    -La quantité demandée.
    -La date souhaitée (On souhaite recevoir ces articles au plus tard le jour/mois/année).
    -La date de la demande d’achat (Le jour où elle a été écrite)
    -Code de la demande.
    Une demande fait donc mention d’un certain nombre d’articles, ainsi que d’une suggestion servant à déterminer le fournisseur à contacter. La modélisation correspondante est la suivante :

    Vue DEMANDE



    En assemblant les vues :



    Je note que pour votre part vous avez défini une ternaire :



    C'est-à-dire que la règle n’est plus celle que vous aviez formulée, selon laquelle une demande concerne un seul fournisseur, mais deviendrait celle-ci :
    Une demande peut concerner plusieurs fournisseurs.

    Veuillez statuer sur la règle de gestion qui devra être appliquée.


    A propos des livraisons.

    Vous avez modélisé ainsi :



    Je fais observer que, suite à dérivation du MCD en MLD, l’association CONTENIR donnera lieu à une table ayant la structure suivante (clé soulignée) :
    CONTENIR {code_livraison, code_article, forme_entrée, date_entrée, quantité_entrée}

    Mais vous avez écrit :

    Citation Envoyé par RZinaoui Voir le message
    On peut considérer que le temps entre la livraison des articles et leur mise en stock est nul.
    Concernant l’entrée des articles, on doit tenir compte des informations suivantes :
    -La date d’entrée (Elle correspond à la date de livraison).
    La date d’entrée d’un article est donc égale à la date de livraison, en vertu de quoi il existe la dépendance fonctionnelle :
    {code_livraison} -> {date_entrée}
    Ce qui fait que la 2NF est violée.

    Il faut donc rectifier le tir, faire travailler une fois de plus le théorème de Heath, pour obtenir :



    Relation entre les demandes et les livraisons

    Selon votre MCD, on ne sait pas à quelle demande fait référence une livraison.

    On peut ajouter le lien manquant, comme quoi une livraison honore tout où partie d’une demande :



    Attention ce diagramme n’est qu’une vue partielle du diagramme général.

    Remarque : Le fournisseur a pu livrer des articles qui ne correspondent pas à la demande : le service Achats s’en sera-t-il occupé ? Est-ce votre rôle ?


    A propos des stocks :

    Idéalement, le stock est évidemment fonction du stock initial, des entrées et des sorties mais concrètement peut-être aussi de choses non prises en compte ici (articles cassés, perdus, invendables, etc.) : par sécurité vous pourriez modéliser une entité-type STOCK, avec tenue des stocks à date :



    On peut bien sûr vérifier par rapport à la différence entre les entrées et les sorties.


    Citation Envoyé par RZinaoui Voir le message
    Pour la table JAD, c'est le résultat d'une relation ternaire existant entre les entités Demande d'achat, Fournisseur et Article. Est-ce bien ça ? Si oui, comment vous avez fait pour la lier à la table ARL ? car on s'est jamais présenté devant un tel cas avec Merise ou bien c'est réservé à ALM ?
    Merise le permet par le biais d’une CIF (contrainte d’intégrité fonctionnelle) symbolisée par la flèche rouge et qui signifie que pour un article et une demande donnés il n’y a qu’un fournisseur. En l’absence de CIF il peut y en avoir plusieurs.



    N’oubliez pas qu’avec les diagrammes de MySQL Workbench on modélise des tables et que les contraintes merisiennes liées aux ovales n’existent pas (associations d’associations, etc.)


    @Krop,

    Selon la table JAD de votre diagramme, une demande peut être associée à plusieurs fournisseurs. Ci-dessus, j’ai fait des remarques à RZinaoui à ce sujet. Maintenant, toujours selon cette table, pour une demande et un article donnés il y a un seul fournisseur, par contre au vu de la composition de la clé de la table ARL pour une demande et un article donnés, on peut cette fois-ci avoir plusieurs fournisseurs : mais ça ne peut pas être le cas (ce que vous confirmez : « La table ARL nous renseigne sur ce qui a été livré Cette table nous informe sur la forme dans laquelle l'article est livré ainsi que le fournisseur qui l'a livré »), ainsi il y a viol de 2NF conduisant à appliquer le théorème de Heath.


    @Lions,

    Je regarderai la suite un peu plu tard, essayons déjà de nous mettre d’accord sur la partie demandes, livraisons, stock. Je note quand même en passant que la clé primaire de la table JAU de Krop est en contradiction avec les cardinalités portées par les pattes la branchant sur ART et UTI.
    (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.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Merci fsmrel d'avoir partagé avec nous votre modélisation de cette étude de cas !

    J'ai lu ce que vous avez écrit mais je n'ai pas compris certaines choses, par contre vous m'avez éclaircit autant ...
    Je vais devoir relire attentivement votre dernier message demain et essayer d'en retenir le maximum en utilisant les liens que vous m'avez laissé en couleur bleue.

    Si je comprendrai bien les choses (je l'espère), il ne va me rester que trouver une méthode pour savoir le stock_actuel de chaque article avant de passer à la partie technique de mon projet. J'aimerai bien avoir votre aide à ce propos surtout s'il s'agit bien des requêtes ...

    Je remercie également Krop pour sa belle contribution, espérons qu'il revienne continuer la discussion avec nous .

    Cordialement

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Salut chers experts
    Salut fsmrel j'espère que vous allez bien.

    J'ai relu votre dernier message, c'était clair et bien expliqué. J'ai essayé également de comparer les règles de normalisation que vous m'avez données avec celles qu'on a étudié cette saison, j'en suis sortis que vous insistez trop sur le coté mathématique des choses (Algèbre relationnelle). Pour nous c'était un petit peu simple et facile à comprendre. Je vais brièvement rappeler les règle 2 et 4 de la normalisation qu'on a vues:
    1. N°2: On dit que A est en dépendance fonctionnelle de B si pour toutes valeurs de B il existe une et une seule valeur de A.
    2. La DF directe: les attributs d'une entité doivent dépendre directement de sa clé primaire et non par l’intermédiaire d'une autre propriété
    3. La DF compléte: les attributs d'une entité doivent dépendre de tout l'identifiant et non une partie de cet identifiant
    4. N°3: les attributs d'une association doivent dépendre de tout l'identifiant de l'association (concaténation des identifiants des entités participant à l'association) et non une partie de cet identifiant


    J'attend votre opinion à ce propos, est-ce qu'elles sont similaires ou non parce que je ne suis pas arrivé à bien assimiler ce qui est expliqué dans les liens que vous m'avez laissé.

    Revenons à votre dernier message. Pour être honnête, j'ai bien saisi ce que vous avez expliqué, qui était franchement clair, jusqu'à cette remarque :

    Remarque : Le fournisseur a pu livrer des articles qui ne correspondent pas à la demande : le service Achats s’en sera-t-il occupé ? Est-ce votre rôle ?

    Question: comment vous en avez déduit qu'un fournisseur a pu livrer des articles qui ne correspondent pas à la demande ! Normalement le service d'achats et les fournisseurs doivent OBLIGATOIREMENT obéir à ce qu'a demandé le responsable du magasin !! sinon plusieurs engins resteront en panne et la production s'arrêtera !

    Concernant les stocks.

    Pour la quantité stock, vous l'avez mis comme attribut de l'association stock qui est plusieurs à plusieurs. Pour passer au MLD, cette association sera transformée en une table ayant pour identifiant {code_article,date} donc on sera amené à saisir des informations dans cette table, ce qui n'est pas désiré car on cherche à récupérer cette information (la quantité actuelle en stock, dans un niveau donné ) sans avoir recours à remplir ces champs !

    L'utilisateur de cette application cherche une solution pour ce problème, il veut que l'application se charge de faire un inventaire ( quotidien ou hebdomadaire ou mensuel voire annuel). Il n'a qu'à cliquer sur un bouton et voilà des résultats qui s'affichent lui indiquant le stock des articles de chaque niveau .

    Pour la CIF on l'a jamais vu sauf en ACCESS mais, je crois que vous avez donné une autre méthode pour remédier à ce problème: pour un article et une demande donné il n’y a qu’un fournisseur

    @Krop
    pouviez vous s'il vous plait m'expliquer d'avantage comment vous avez construit l'entité FOR et CON ? et pour quel objectif ?
    Pour l'association utiliser, est-ce date_sortie est en dépendance fonctionnelle de article_id et engin_id ? car je vois que pour un {article_id, engin_id} donné, il existe plusieurs dates de sorties ...

    Je vous remercie infiniment de m'avoir donné cette occasion de partager avec vous ce projet ...

    Cordialement

  17. #17
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bonjour,
    Citation Envoyé par fsmrel
    D’où un viol de la 3NF... Pour éviter un pareil drame, on débarrasse la table ARTICLE de l’attribut TypeArtLibelle en appliquant le théorème de Heath (que Krop doit commencer à bien connaître, tout comme la position de Tabourier... ), conduisant à la mise en œuvre d’une table TYPE_ARTICLE :
    Autant la proposition de Tabourier, je la connais et la prêche comme un fervent défenseur, autant le théorème de Heath, je sais à quoi il sert mais de là à le connaître au sens mathématique, il y a un pas que je ne franchirais pas. Maintenant, il fort possible que je l'applique de manière naturelle sans savoir qu'il s'agisse en fait de cela ^^

    Citation Envoyé par fsmrel
    @Krop,

    Selon la table JAD de votre diagramme, une demande peut être associée à plusieurs fournisseurs. Ci-dessus, j’ai fait des remarques à RZinaoui à ce sujet. Maintenant, toujours selon cette table, pour une demande et un article donnés il y a un seul fournisseur, par contre au vu de la composition de la clé de la table ARL pour une demande et un article donnés, on peut cette fois-ci avoir plusieurs fournisseurs : mais ça ne peut pas être le cas (ce que vous confirmez : « La table ARL nous renseigne sur ce qui a été livré Cette table nous informe sur la forme dans laquelle l'article est livré ainsi que le fournisseur qui l'a livré »), ainsi il y a viol de 2NF conduisant à appliquer le théorème de Heath.
    Il est plus que probable qu'il s'agisse d'une erreur d'attention de ma part et qu'effectivement, la colonne FOU_ID devrait faire partie de la PK de la table JAD. Mais je ne crois pas. Pour la demande D et l'article A, le magasinier conseille le fournisseur F. Je ne vois pas où est le problème. On a donc la DF suivante : {D,A} --> {F}.

    Pour la table ARL, je ne vois pas non plus de problème. Nous n'avons à priori aucun contrôle sur ce qui est effectivement passé comme commande par le service d'achat. Par conséquent, rien n'interdit que ce dernier, pour une demande D de 1000 pièces de l'article A avec F comme fournisseur conseillé fasse en réalité une commande de 500 pièces de l'article D chez le fournisseur F et, pour une raison quelconque (par exemple une rupture de stock de ce fournisseur car il n'a pas un DB aussi bonne que la notre ), une autre commande de 500 pièces chez le fournisseur F'.

    Ma table me semble répondre totalement à ce besoin.

    Citation Envoyé par fsmrel
    Je note quand même en passant que la clé primaire de la table JAU de Krop est en contradiction avec les cardinalités portées par les pattes la branchant sur ART et UTI.
    Là effectivement, il y a un souci. Je sais pas ce que j'ai foutu avec ces relations-là. Les cardinalités devraient évidemment être 1, 1..* . Disons que c'était pour vérifier que vous suiviez bien tous les deux
    Kropernic

  18. #18
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par RZinaoui Voir le message
    @Krop
    pouviez vous s'il vous plait m'expliquer d'avantage comment vous avez construit l'entité FOR et CON ? et pour quel objectif ?
    Concernant les tables FOR et CON :
    Vous avez dit que les articles vous sont livrés sous une forme mais utilisé sous un autre. Par conséquent, si vous recevez 50 bobines de l'article A et que 273 mètres sont utilisés, comment pouvez-vous savoir ce qu'il vous reste en stock sans avoir un moyen de convertir les bobines en mètres ou les mètres en bobines ?
    C'est à cela que servent ces deux tables.

    Pour l'exemple que je viens de prendre, disons que dans une bobines de A, il y a 125 mètres.

    Nous avons donc alors pour les deux tables : (j'ajoute une colonne FOR_LIBELLE histoire de savoir de quoi on parle quand même, je l'ai oublié lors de la réalisation du diagramme)
    table FOR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FOR_ID  ;  FOR_UNITE  ;  FOR_LIBELLE
    1  ;  1  ; Bobine
    2  ;  1  ; Mètre
    table CON:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOR_ID_IN  ;  FOR_ID_OUT  ;  CON_QUANTITE_IN  ;  CON_QUANTITE_OUT
    1  ;  2  ;  1  ;  125
    Avec ceci, on sait que une bobine contient 125 mètres.
    Si on a plusieurs tailles de bobines, on ajoute une ligne par type de bobine dans la table FOR en ajoutant quand même dans le libellé une petite description histoire de savoir quel type de bobine il s'agit (sinon ça va être la foire d'empoigne). Et on fait les conversions équivalentes dans la table CON.

    Citation Envoyé par RZinaoui Voir le message
    Pour l'association utiliser, est-ce date_sortie est en dépendance fonctionnelle de article_id et engin_id ? car je vois que pour un {article_id, engin_id} donné, il existe plusieurs dates de sorties ...
    Bien sûr qu'il (peut) existe(r) plusieurs date de sorties. Qu'est-ce qui interdit un conducteur d'engin de casser plusieurs fois la même pièce de sa machine ?
    Kropernic

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Bonjour Krop,

    Merci chef, j'ai bien compris maintenant
    Il me reste une question concernant ces deux tables FOR et CON, c'était quoi l'association entre elles avant de passer au MLD ? (Je suis désolé mais je n'ai pas bien compris cette notation de workbench) est-ce un à un (association fantôme) ?

    Pour la partie gauche de votre diagramme en bas, y'a toujours une question sans réponse .. Pour mon MCD, j'ai crée une association appelé UTILISER liant les trois entités: ENGIN, ARTICLE, DATE DE SORTIE. En passant au MLD, je ne suis pas tombé sur ce que vous avez trouvé ! Est-ce une erreur de ma part ou bien c'est la même chose sauf la présentation des tables se diffère d'un logiciel à un autre ?

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Elève ingénieur
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Elève ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Bien sûr qu'il (peut) existe(r) plusieurs date de sorties. Qu'est-ce qui interdit un conducteur d'engin de casser plusieurs fois la même pièce de sa machine ?
    Voilà, je l'ai tenu en compte lors de la réalisation de mon MCD, mais pourquoi on n'a pas eu la même chose lors du passage au MLD ? est-ce, comme j'ai dit dans mon dernier message, histoire de notation qui diffère d'un logiciel à un autre ou bien il y'a quelque chose que je dois savoir ?
    Parce que d'après mes connaissance, l'association ternaire UTILISER deviendra une table ayant pour clé primaire {article_id, engin_id, date_sortie} mais dans votre diagramme, j'ai remarqué qu'il y'a deux tables une s'appelle UTI et l'autre JAU !

    Excusez moi d'avoir posé trop de questions ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Gestion de stock : Formule en section Détail
    Par JeremieT dans le forum IHM
    Réponses: 4
    Dernier message: 16/12/2005, 17h02
  2. Gestion de stock CMUP après chaque entrée
    Par priest69 dans le forum Access
    Réponses: 9
    Dernier message: 13/12/2005, 10h03
  3. Gestion de stock - Prix Moyen Pondéré
    Par hugo69 dans le forum Access
    Réponses: 33
    Dernier message: 28/10/2005, 17h03
  4. Analyses du progiciel de gestion de stock COSWIN CS 5.2
    Par africanroseonlyone dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 13/10/2005, 15h01
  5. gestion des stocks
    Par gekondo dans le forum Access
    Réponses: 1
    Dernier message: 30/09/2005, 11h41

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