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


Sujet :

Schéma

  1. #1
    Candidat au Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Gestion de stock
    Bonjour tout le monde;

    Voila on m'a demandé de faire des tables pour gestion de stock d'une clinique pour gérer:

    - gestion des entrées médicament -> stock( commande-fournisseur-livraison)
    - gestion des sorties médicament -> services ( demande- services- sortie)
    - gestion d'un inventaire.

    sachant que je vais programmer en php, j'ai utilisé EasyPhp pour la réalisation des ces différentes tables et voici ce que j'ai fait:
    Code :Sélectionner tout - Visualiser dans une fenêtre à part

    -- phpMyAdmin SQL Dump
    -- version 4.1.4
    -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
    --
    -- Client : 127.0.0.1
    -- Généré le : Ven 27 Mars 2015 à 11:26
    -- Version du serveur : 5.6.15-log
    -- Version de PHP : 5.5.8

    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";

    --
    -- Base de données : `stock_medicament`
    --

    -- --------------------------------------------------------

    --
    -- Structure de la table `besoins_service`
    --

    CREATE TABLE IF NOT EXISTS `besoins_service` (
    `id_besoins` int(11) NOT NULL COMMENT 'numero de la demande',
    `id_medicament` int(11) NOT NULL COMMENT 'identifiant medicament ',
    `qtte_med` tinyint(3) NOT NULL COMMENT 'quantité demandée',
    `id_service` tinyint(3) NOT NULL COMMENT 'identifiant service',
    `date_demande` date NOT NULL COMMENT 'date de la demande d''approvisionnement ',
    PRIMARY KEY (`id_besoins`,`id_medicament`,`qtte_med`),
    KEY `id_service` (`id_service`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table des demandes d''approvisionnement';

    --


    -- --------------------------------------------------------

    --
    -- Structure de la table `commande`
    --

    CREATE TABLE IF NOT EXISTS `commande` (
    `id_commande` int(11) NOT NULL AUTO_INCREMENT COMMENT 'numero de la commande',
    `id_medicament` int(11) NOT NULL COMMENT 'identifiant médicament ',
    `id_fournisseur` int(11) NOT NULL COMMENT 'identifiant fournisseur',
    `date_commande` date NOT NULL COMMENT 'date de la commande',
    `délais_livraison` tinyint(3) NOT NULL COMMENT 'delais de livraison en jour ',
    `qtte_med` tinyint(3) NOT NULL COMMENT 'quantité medicament',
    PRIMARY KEY (`id_commande`,`id_medicament`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='la table des commandes fournisseurs' AUTO_INCREMENT=6 ;



    -- --------------------------------------------------------

    --
    -- Structure de la table `fournisseur`
    --

    CREATE TABLE IF NOT EXISTS `fournisseur` (
    `id_fournisseur` int(11) NOT NULL AUTO_INCREMENT COMMENT 'identifiant fournisseur',
    `Nom_fournisseur` varchar(100) NOT NULL COMMENT 'Nom ou raison sociale ',
    `nis_fournisseur` varchar(22) NOT NULL COMMENT 'numero identification statistique',
    `AI_fournisseur` varchar(22) NOT NULL COMMENT 'Numero de l''article d''imposition',
    `Numero_tel_fixe` varchar(20) NOT NULL COMMENT 'coordonnée téléphone fixe',
    `num_tel_mobile` varchar(12) NOT NULL COMMENT 'numero mobile',
    `email_fournisseur` varchar(20) NOT NULL COMMENT 'adresse email',
    `adresse` varchar(22) NOT NULL COMMENT 'adresse complete ',
    `ville` varchar(22) NOT NULL,
    `rue` varchar(22) NOT NULL,
    `code_postal` varchar(22) NOT NULL,
    `région` varchar(22) NOT NULL COMMENT 'localité',
    `Remarque` text NOT NULL COMMENT 'remarque concernant le fournisseur ou son produit',
    PRIMARY KEY (`id_fournisseur`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table des fournisseurs' AUTO_INCREMENT=3 ;

    --



    -- --------------------------------------------------------

    --
    -- Structure de la table `livraison`
    --

    CREATE TABLE IF NOT EXISTS `livraison` (
    `id_livraison` int(10) NOT NULL COMMENT 'numero de la livraison',
    `id_medicament` int(11) NOT NULL COMMENT 'identifiant médicament livré',
    `date_livraison` date NOT NULL COMMENT 'date de livraison',
    `nom_livreur` varchar(255) NOT NULL COMMENT 'nom de la personne qui a effectué la livraison',
    `prix_unitaire` decimal(7,2) NOT NULL COMMENT 'prix unitaire pour chaque unité livrée',
    `id_fournisseur` int(11) NOT NULL COMMENT 'identifiant fournisseur',
    `num_bon_liv` int(11) NOT NULL COMMENT 'numero du bon de livraison ou de la facture',
    `montant_globale` decimal(7,2) NOT NULL COMMENT 'montant globale de la facture',
    `observation` text NOT NULL COMMENT 'remarque sur le deroulement de la livraison',
    `qtte_med` tinyint(3) NOT NULL COMMENT 'quantité medicament',
    PRIMARY KEY (`id_livraison`,`id_medicament`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table de livraison ';

    -- --------------------------------------------------------

    --
    -- Structure de la table `medicament`
    --

    CREATE TABLE IF NOT EXISTS `medicament` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `nom` varchar(100) CHARACTER SET utf32 COLLATE utf32_unicode_ci NOT NULL,
    `posologie_par_defaut` varchar(255) CHARACTER SET utf32 COLLATE utf32_unicode_ci DEFAULT NULL,
    `type_contenant_par_defaut` int(11) NOT NULL DEFAULT '0',
    `id_user` int(11) NOT NULL,
    `date_modif` date NOT NULL,
    `heure_modif` varchar(5) CHARACTER SET utf32 COLLATE utf32_unicode_ci NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `nom` (`nom`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table des médicaments' AUTO_INCREMENT=326 ;

    --
    -- Contenu de la table `medicament`
    --


    -- --------------------------------------------------------

    --
    -- Structure de la table `service`
    --

    CREATE TABLE IF NOT EXISTS `service` (
    `id_service` tinyint(3) NOT NULL AUTO_INCREMENT COMMENT 'identifiant du service',
    `nom_service` varchar(100) CHARACTER SET latin1 NOT NULL,
    `chef_service` varchar(22) NOT NULL COMMENT 'nom du chef du service',
    `type_domaine` varchar(20) NOT NULL COMMENT 'type du domaine (général ou spécifique)',
    `domaine` varchar(22) NOT NULL COMMENT 'nom du domaine exp: cardiologie',
    PRIMARY KEY (`id_service`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='table des différents services' AUTO_INCREMENT=5 ;



    -- --------------------------------------------------------

    --
    -- Structure de la table `sortie_service`
    --

    CREATE TABLE IF NOT EXISTS `sortie_service` (
    `id_sorti` int(11) NOT NULL COMMENT 'numero de la sortie',
    `id_medicament` int(11) NOT NULL COMMENT 'identifiant medicament ',
    `date_sortie` date NOT NULL COMMENT 'date de la sorti',
    `id_service` tinyint(3) NOT NULL COMMENT 'identifiant du service approvisionné',
    `qtte_med` tinyint(3) NOT NULL COMMENT 'quantité medicamet demandé par les service',
    PRIMARY KEY (`id_sorti`,`id_medicament`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='les sorties de stock vers les différent services';

    -- --------------------------------------------------------

    --
    -- Structure de la table `stock`
    --

    CREATE TABLE IF NOT EXISTS `stock` (
    `id_lot` int(11) NOT NULL AUTO_INCREMENT COMMENT 'numero du lot',
    `id_medicament` int(11) NOT NULL,
    `date_stockage` date NOT NULL,
    `date_peremption` date NOT NULL,
    `stock_actif` smallint(5) NOT NULL,
    `stock_maximum` smallint(5) NOT NULL,
    `stock_alerte` smallint(5) NOT NULL COMMENT 'le stock minimum a atteindre pour lancer une commande',
    `prix_unitaire` varchar(22) NOT NULL COMMENT 'prix de l''unité lors de l''achat',
    PRIMARY KEY (`id_lot`),
    KEY `id_medicament` (`id_lot`),
    KEY `date_stockage` (`date_stockage`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='tables des différents lots existants' AUTO_INCREMENT=4 ;



    -- --------------------------------------------------------

    --
    -- Structure de la table `stock_réel` (stock physique)

    --

    CREATE TABLE IF NOT EXISTS `stock_réel` (
    `id_lot` int(11) NOT NULL COMMENT 'numero de lot',
    `qtte_en_stock` smallint(4) NOT NULL COMMENT 'quantité de médicament réel',
    `date_inventaire` date NOT NULL COMMENT 'date de l''inventaire',
    `responsable_inventaire` varchar(22) NOT NULL COMMENT 'responsable de l''inventaire',
    `observation` text NOT NULL COMMENT 'observation sur l’état des stock ',
    KEY `id_lot` (`id_lot`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='stock lors de l''inventaire';

    Je voudrais savoir si mes tables sont cohérentes, et comment pourrais-je la perfectionner, svp c'est très urgent

  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 036
    Points
    34 036
    Billets dans le blog
    14
    Par défaut
    1) Il aurait été mieux d'utiliser le moteur InnoDB pour pouvoir mettre en oeuvre les clés étrangères.

    2) Vous auriez pu nous fournir un schéma !

    J'ai dessiné vite fait un MCD à la main à partir de la structure de vos tables.
    Voici les remarques que je ferais...

    3) Vous exprimez tout à partir d'un médicament.
    Chaque besoin d'un service ne se rapporte qu'à un seul médicament, de même que chaque commande, chaque livraison, chaque sortie-service, chaque lot de stock.
    Dans la vraie vie, j'ai plutôt l'impression, a priori, qu'un service va exprimer sur un formulaire le besoin de plusieurs médicaments, qu'une commande à un fournisseur va pouvoir concerner plusieurs médicaments, qu'une livraison d'un fournisseur va comprendre plusieurs médicaments.

    Réfléchissez à tout ça.

    4) D'habitude, une livraison se rapporte à une ou plusieurs commandes et une commande peut faire l'objet de plusieurs livraisons.
    Dans votre structure, il n'y a aucun lien entre la commande et la livraison.
    On sait juste qu'un médicament M1 a été commandé au fournisseur F1 mais il n'est pas impossible que ce médicament M1 ait été livré par le fournisseur F2 !



    Commencez par faire un MCD, de préférence avec un logiciel de modélisation (JMerise par exemple) ou à la rigueur directement un diagramme entités-relations (avec MySQL Workbench puisque vous utilisez MySQL, ce qui n'est pas le meilleur choix).

    On verra d'autres détails ultérieurement.
    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 !

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