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

Modélisation Discussion :

Probleme de conception de base de donnees


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Prof maths
    Inscrit en
    octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Prof maths
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2015
    Messages : 8
    Points : 12
    Points
    12
    Par défaut Probleme de conception de base de donnees
    Salut à tous !

    J'aimerais vous remercier d'avance pour tout ce que vous faites pour le bien de la communauté informatique

    Bref : J'ai conçu une base de données pour la gestion d'un magasin de bijouterie dont voici les tables : (je m'excuse pour le MCD je ne l'ai pas entre les mains !!)

    Avant tout les objectifs du projet (les grandes lignes) :

    1- Saisir les produits qui sont étalés dans le magasin
    2- Chaque produit a : code(réf) - nom - poids - quantité - prix de vente - seuil stock
    3- Lors d'un achat : mettre à jour le stock
    4- Lors d'une vente : mettre à jour le stock
    5- Saisir les clients : code(réf) - nom - tél - adresse - compte(car il y a des clients qui ne réglent pas totalement leurs achats)
    6- Gérer les comptes des clients : à chaque versement du client actualiser son compte
    7- Gérer les mouvements de stock : Les entrées - les sorties - cas où un client retourne un produit défectueux - produits cassés ...
    8- Etablir un inventaire du stock

    Voilà en gros les objectifs du projet seulement j'ai un souci en ce qui concerne la conception des tables :

    Ma 1ère question : Pour la table produits est-ce qu'il est judiciable d'avoir le champs "Quantité En Stock" du produit ou non ? et quelle est la meilleure solution

    Ma 2ème question : Pour la table Mouvement du stock : MvtStock ( MvtID , MvtDate , TypeMvt , ProdID , QtiteEntree , PoidsEntre , QtiteSortie , PoidsSorti )

    Ma 3ème question : Comment faire pour rendre la quantité actuelle d'un produit comme initiale lors d'une nouvelle année

    Comment faire une requete SQL pour afficher ça :


    Réf(Produit) | Qtité Initiale | Qtité Entrée | Qtité Sortie | Qtité Actuelle |


    Voici mes tables :

    Produits ( ProdID , ProdName , ProdDesc , Poids , QtiteEnStock , PrixVente , StockMin )

    Clients ( ClientID , RefClient , DateCreation , Nom , Prenom , Adr , Tel , Statut , TotalCredit , TypeClient )

    Crédits ( CreditID , DateCredit , ClientID , TotFactVenteCred )

    DétailCrédit ( DetCreditID , CreditID , ProdID , QtiteVendCred , PoidsVenduCred , TotPrixCred )

    Achats ( AchatID , DateAchat , TotFactAchat , AchatStatut , FournID )

    DetailAchat ( DetAchatID , AchatID , ProdID , QtiteAchat , PoidsAchat , PrixFactAchat )

    Ventes ( VenteID , DateVente , TotFactVente , ClientID , Statut )

    DetailVente ( DetVenteID , VenteID , ProdID , PoidsVendu , QtiteVendue , PrixFactVente )

    MvtStock ( MvtID , MvtDate , TypeMvt , ProdID , QtiteEntree , PoidsEntre , QtiteSortie , PoidsSorti )

    Voilà un GRAND MERCI pour votre aide !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 723
    Points : 20 760
    Points
    20 760
    Par défaut
    Bonjour.

    Pour les stocks et ta question Faut-il avoir un champ stock courant, la répons est "ça dépend".

    Ma première réponse est "Non", il te suffit d'une table des mouvements de stock et de faire la somme des entrées moins les sorties à une date données pour obtenir le résultat.
    Cette solution est la meilleur car il est fortement recommandé de NE PAS ENREGISTRER le résultat d'un calcul dans une table.
    Une fois enregistré, ce résultat est "gelé" et si tu changes les termes qui y ont mené, lui ne bouge pas. Tu peux donc assez facilement obtenir des incohérences.

    Maintenant, ce calcul (à chaque fois) peut prendre un temps non négligeable et paraître. Dans ce cas là, il faut malheureusement se résoudre à enregistrer le résultat et s'assurer que si il y a des modifs en amont, il soit ajusté en conséquence.

    Si tu as peu de mouvements, commence par la 1ère solution qui est BEAUCOUP plus simple à mettre en œuvre.

    Pour la table des mouvements, je te recommande de ne pas avoir un champ pour les entrées et champ pour les sorties mais un champ "quantité" et un champ "SensVariation" ou "TypeMouvement".

    tblMouvemnet

    ClefMouvement
    DateMouvement
    QteMouvement
    PoidsMouvment
    SensMouvement (+/-) ou TypeMouvement

    Le type Mouvement pourrait être :
    • Entrée (+Qte)
    • Vente (-Qte)
    • Perte (-Qte)
    • Perte sur stock (-Qte) (ou alors un nouveau stock initial avec une nouvelle date mais il faut faire attention lors des cumuls), Genre je croyais en avoir 10 mais il n'en reste plus que 5, perte sur stock -5
    • Gain sur stock (+Qte) (ou alors un nouveau stock initial avec une nouvelle date mais il faut faire attention lors des cumuls), Genre je croyais en avoir 15 mais en reste 35, gain sur stock +20
    • Stock Initial (+Qte)


    Après tu peux utiliser une requête de regroupement pour avoir le total des mouvements à une date donnée.


    Pour présenter un résulat tel que celui-ci :

    Réf(Produit) | Qtité Initiale | Qtité Entrée | Qtité Sortie | Qtité Actuelle |

    Il te faut :

    • une requête qui te donne le total initial (somme des mouvements < AAAA-01-01) par article.
    • une requête qui te donne les entrées (somme des mouvements >= AAAA-01-01 et <= AAAA-12-31 et ce qui correspond à une entrée) par article.
    • une requête qui te donne les sorties (somme des mouvements >= AAAA-01-01 et <= AAAA-12-31 et ce qui correspond à une sortie) par article.
    • une requête qui te donne les entrées et les sorties (somme des mouvements >= AAAA-01-01 et <= AAAA-12-31) par article.
    • et une requête qui va te présenter le résultat, basé sur ta table des articles en jointure (à gauche, sur la référence de l'article) avec les 4 autres décrites précédemment.
      On est obligé d'ajouter celle-ci car il se pourrait qu'il y ai des articles sans mouvement de stock (ex : des articles que tu ne tiens pas habituellement en inventaire mais que tu pourrais vendre à la demande expresse du client).


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Prof maths
    Inscrit en
    octobre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Prof maths
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2015
    Messages : 8
    Points : 12
    Points
    12
    Par défaut
    Salut !

    Je vous remercie BEAUCOUP, vous m'avez éclairez sur des points très OBSCURS mais dans le cas d'un mouvement de stock :

    Comment écrire la requete (Un Exemple) dans laquelle on pourra calculer : "Qtité_Initiale" ET "Qtité_Entrée" ET "Qtité_Sortie" ET "Qtité_En_Cours"

    Tout en spécifiant la valeur du champ "Type_Mvt" . Est-ce avec des AND ou OR ou les DEUX et le type de jointure INNER JOIN ou LEFT JOIN ou RIGHT JOIN

    Je m'excuse de poser trop de questions , je suis débutant et j'éspère beaucoup apprendre

    Encore MILLE MERCI !

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 723
    Points : 20 760
    Points
    20 760
    Par défaut
    Bonjour.

    La méthode la plus simple avec Access est de ne pas écrire le SQL soi-même.
    L'éditeur est vraiment limité et la syntaxe parfois exotique.
    Et tu n'as pas besoin de jointure du moins si tu ne prévois pas plus de type de mouvement dans l'avenir.

    Je vais te donner l'exemple pour les entrées, tu ne devrais pas avoir trop de difficulté à faire les autres.

    Va dans l'éditeur de requête.
    1. Choisi ta table des mouvement.
    2. Sélectionne tous les champs et glisse les dans les colonnes.
    3. Dans la 1ère lignes de critère,
      • dans la colonne date, tu mets une date (ex : Entre #2019-01-01# et #2019-12-31# les mouvements de l'année 2019).
      • dans la colonne [Type_Mvt] tu mets quelque chose comme "SOLDE_INITIAL" or "ENTREE" or "GAIN_STOCK".
        Access va traduire les "or" en "ou" pour toi.


    Une fois que tu as validés que les données étaient bien celles que tu attendais, tu appuis sur l'icône "Regroupement" (le sigma majuscule qui ressemble à un 3 à l'envers).

    Cela va t'afficher la ligne regroupement.

    Là il ne faut garder que l'essentiel :
    • Le code de l'article doit être présent et coché.
      La ligne regroupement affiche "Regroupement"
    • La quantité doit être présente et cochée.
      La ligne regroupement affiche "Somme"
      Astuce : mettre Quantite :*avant le nom du champ quantité (tu peux mettre le nom que tu veux).
      Cela évite que Access mette : SommeDeQuantite à la place.
    • La date doit être présente mais pas cochée.
      La ligne regroupement affiche "Où"


    Tu sauvegardes et tu valides les résultats.

    Après il faudra que ta requête soit paramétrées pour ne pas avoir à faire une requête pour 2019, une pour 2020 est ainsi de suite mais je te reviens plus tard à ce sujet.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. probleme avec MODULE DE BASE DE DONNEES
    Par jamdinhe dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/11/2007, 10h53
  2. Réponses: 10
    Dernier message: 16/03/2005, 19h25
  3. Probleme de gestion de base de donnees SQL
    Par Nonold dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 17h18
  4. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 10h36
  5. [LG]probleme de lecture de base de données
    Par jf dans le forum Langage
    Réponses: 14
    Dernier message: 26/06/2003, 16h57

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