Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2006, 09h39   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 2
Points : 2
Par défaut Comment "geler" des données ?

Bonjour,

Rassurez-vous, je vais expliquer mon problème :

Je cherche à mettre sur pied un système de facturation avec deux types de prestations (cad : des produits vendus et des actes). Mon souci est de stocker les prix facturés de façon à ce qu'ils ne soient pas modifiés quand une mise à jour des prix fournisseur est lancée.
En résumé, il me faut stocker les données de cette facturation sans qu'il soit possible de les modifier ultérieurement (sauf par une procédure manuelle éventuellement).

Merci de votre aide.

Pierre
pierre65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 09h50   #2
Membre habitué
 
Avatar de rieppe
 
Étudiant
Inscription : octobre 2004
Messages : 115
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2004
Messages : 115
Points : 124
Points : 124
Envoyer un message via MSN à rieppe
Salut,

Pourquoi ne pas partir du principe qu'un produit peut avoir plusieurs prix ?

Ainsi, Tu ne prendrait en prix actuel que le plus récent (soit celui dont l'identifiant est maximum, soit tu metsune date associée).

Avec ca tu pourra savoir en stockant l'id du prix associé a un produit, quel un client prix aura payé même si le prix n'est plus le même actuellement.

Cela te parait il clair ? Sinon j''essaye de réexpliquer mon point de vue ^^
rieppe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 11h43   #3
Invité de passage
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 2
Points : 2
Par défaut Suite

Tu veux dire que tu associerais prix et date pour avoir une clé primaire sur le prix ?

Pierre
pierre65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 12h18   #4
Membre habitué
 
Avatar de rieppe
 
Étudiant
Inscription : octobre 2004
Messages : 115
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2004
Messages : 115
Points : 124
Points : 124
Envoyer un message via MSN à rieppe
Je ferais la chose suivante :

Create table Prix (
idPrix int,
idProduit int,
DatePrix DATETIME
) Engine = InnoDb;

Ainsi, tu poura récupérer le prix le plus récent si tu lies cette table avec la table produit via une clef étrangère.

Je ne sais pas si cela répond a ton problème, je suis là si tu as ecore besoin d'aide :o
rieppe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 14h42   #5
Invité de passage
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 2
Points : 2
Par défaut Suite

Merci pour ta réponse.
Dans un livre (MySQL 4, Edition ENI), j'ai la solution suivante (adaptée par mes soins à ce que je cherche à faire) :
Créer trois tables : factures, détail_actes et détails_produits :

Factures (numérofacture (PK), Idclient, date)

Détail_acte (numérofacture, numéro_ordre, code acte, quantité, prix)

détail_produit (numérofacture, numéro_ordre, code_produit, quantité, prix)

Cette façon de faire est sensée stocker les prix au moment de l'enregistrement de la facture, mais je ne sais qu'en penser...

Pierre
pierre65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h58.


 
 
 
 
Partenaires

Hébergement Web