BBD : Gestion commandes et changements prix - SQL/NoSQL - Programmation
Marsh Posté le 26-03-2007 à 03:12:51
Ok .. dans quoi, dans ligne_commande ?
Ou bien faire une archive des prix par dates ?
Marsh Posté le 26-03-2007 à 12:07:03
dans la ligne de commande.
le prix stocké doit être le prix "net", c'est à dire après toute éventuelle remise, promotion ou autre.
par exemple, t'as une gestion des prix un peu plus complexe : des prix négiociés.
pour un client X, une période Y et une quantité Z, t'as un prix.
en plus de ça, t'as une promotion spéciale de -30% si les produits P1 et P2 sont commandés en même temps.
tu vas avoir l'air fin le jour où le gars va te demander une copie de sa facture 6 mois après, lorsqu'il ne sera plus client, et ta promotion passée.
donc tu stockes le prix exact tel qu'il doit ressortir à l'impression dans ta commande, promotion comprise.
évidement, cela implique de mettre en place un trigger qui va recalculer le prix à chaque modification d'une ligne.
pour le prix total, tu peux le stocker aussi, mais il est inutile. il ne servira que dans une optique d'optimisation.
Marsh Posté le 26-03-2007 à 16:44:33
MagicBuzz a écrit : tu vas avoir l'air fin le jour où le gars va te demander une copie de sa facture 6 mois après, lorsqu'il ne sera plus client, et ta promotion passée. |
Oui, c'est le but de ma question :-)
Merci bien MagicBuzz. Je vais stoquer les totaux dans ligne_commande.
Que la force soit avec toi
Marsh Posté le 25-03-2007 à 17:35:10
Bonjour,
Un site marchand qui repose sur une base de données : une table commande, une table ligne_commande, une table produit.
ligne_commande : lc_id, lc_qte, lc_idcommande, lc_idproduit
produit : p_id, p_nom, p_prix
Une ligne de commande prend l'id d'un produit, mémorise la quantité.
Le total d'une ligne de commande est calculé donc hors-bd : ligne_commande.lc_qte * produit.p_prix where ligne_commande.lc_idproduit = produit.p_id
Client passe une commande le 24/03, le montant de sa commande est la somme des totaux de chacune des lignes de sa commande.
Le 02/12, plus tard, le commerçant consulte ses archives de commandes : le montant de la commande de Client a changé, car :
depuis, le prix des articles concernés ont changé. Etant donné que les totaux sont calculés et non stoqués, si le prix d'un produit
change, toutes les commandes dans lesquelles se trouve ce produit voient leur montant total changer.
Quelle est l'approche la plus utilisée pour gérer cela ?
Stoquer les totaux dans la BD ? De quelle manière ?
Merci d'avance