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 :

Comment feriez-vous? conception d' une base de données.


Sujet :

Schéma

  1. #1
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut Comment feriez-vous? conception d' une base de données.
    Bonjour
    Je me pose la question suivante lors de la création d'une base de données, histoire de gérer les historiques et la réalitée.

    Pour une facture ou un bon de sortie dans une gestion de stock, faut-il
    mettre une table de jointure entre la table des factures et des articles ou
    faut-il avoir une table de facture et une table de détail qui elle aurait
    les mêmes infos que la table article.
    Il me semble que la deuxième méthode avec la table détail, serait mieux
    afin d'avoir un historique des factures. Comme ça si un code article est
    modifié ou effacé, la facture xx dans la table sera identique à l'original
    même après plusieurs mois ou année.

    Méthode 1: table de jointure entre table facture et table article?
    Méthode 2: table détail avec table facture, la table détail et un
    copier/coller d'un enregistrement de la table article à un moment T.
    Idem pour les bons de sortie.

    Merci de vos réponses.
    Patrick

  2. #2
    Membre du Club Avatar de zoheir13
    Inscrit en
    Décembre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    dans votre MCD, il faut créer 2 entités :
    - articles
    -Facture

    une facture contient 1-N article.
    un Article peuvent etre vendu dans 0-N facture.

    Ce qui va créer une association entre la table article et facture=détail facture
    est quit contient la quantité vendu, le prix unitaire de l'article au moment de l'tablissement de la facture (il est modifiable dans la table article),et le montant à payé, vous pouvez ajouter le code article dans l'association détail s'il est modifiable par votre programme.
    La meme chose pour le bon de livraison.
    eviter la suppression d'un article déja vendu. (avec une base de données relationel vous pouvez géré ca facilement).

  3. #3
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Merci de ta réponse Zoheir13.

    C'est bien comme ça que je pensais faire mais ce qui me gène, si je veux plus tard réimprimer ou simplement visualiser la facture auprès du client et que les prix aient changés la facture sera différente. C'est pour ça que je me pose la question comment faire, utiliser une table détail de la facture avec un copier/coller des caractéristiques des articles vendus ou par une jointure et avoir directement le lien avec les articles vendus. Ou éventuellement tout enregistrer dans une table indépendante afin de conserver un historique.
    Patrick

  4. #4
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 057
    Points
    2 057
    Par défaut
    Bonjour,

    La question qui se pose est de retrouver les caractéristiques des articles au moment où la facture a été émise (même plusieurs années en arrière). En effet, les attributs d'un article peuvent être modifiés au cours de sa vie surtout si l'on n'en a pas la maîtrise (article acheté à l'extérieur de l'entreprise). Des attributs comme le prix de vente, l'intitulé commercial, le nombre d'unités de vente, etc., peuvent subir de nombreuses variations dans la vie d'un article.

    Une facture, par nature, ne subit pas ces modifications puisqu'elle est émise à une date déterminée. Le problème se pose lorsque la facture fait appel à des éléments qui, eux, peuvent varier au cours du temps, comme l'article.

    Pour résoudre ce problème, il faut "historiser" les éléments variables avec le temps : il y a l'article, mais peut-être pas tous ses attributs ; il y a aussi peut-être d'autres entités (à déterminer).

    Voici comment je ferais :

    Création d'une association entre Article et Date :

    MCD :
    [ Article ]--1,n----( Histo_Article )----1,n--[ Date ]

    Dans "Histo_Article", je mets les propriétés de l'article variables avec le temps et dans "Article", celles qui sont invariables. Attention, pas de copier/coller : une propriété n'existe qu'en un seul exemplaire.

    La table Date étant inutile dans ce MLD, il comporte donc 2 tables (clés soulignées) :

    Article(article, s1, s2, ...)
    Histo_Article(article, date, v1, v2, ...)

    s1, s2, ..., sont les attributs stables avec le temps
    v1, v2, ..., sont les attributs variables avec le temps

    Chaque fois qu'un attribut variable change, il faut créer une nouvelle ligne dans Histo_Article avec toutes les valeurs d'attributs, pas uniquement celle qui a changé. La facture doit contenir la date à laquelle elle a été émise. Avec cette date, il est facile de récupérer les v1, v2, ..., de chaque article de la facture.
    Attention aux performances, car la clause WHERE des requêtes se fera sur des inégalité de dates.


    JPhi33
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  5. #5
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Merci Jphi33
    Ca confirme, la mémorisation des propriétés de l'article par rapport à une facture. je ferais de même pour les bons de sortie et réception.
    Je vais donc étudier en partant sur ce principe.
    Patrick25300.

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

Discussions similaires

  1. Comment calculer la taille d'une base de données ?
    Par say dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 01/04/2011, 17h48
  2. Réponses: 2
    Dernier message: 30/07/2009, 13h45
  3. Comment changer le dbo d'une base de données?
    Par Immobilis dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/02/2006, 14h21
  4. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 12h29

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