Lorsque le client passe une commande, les éléments item_id et option_id sont stockés dans la table order_items
, à partir de laquelle il génère une facture pour le client. Cependant, le prix de l'article change toujours tous les quelques mois et cela affectera les anciennes informations sur les factures.Historique des prix pour les factures?
Quelle est la solution pour résoudre ce problème? Je ne veux pas stocker le prix et le nom de l'article dans la table order_items
. J'ai lu la solution possible est de créer une table history_prices
(système d'audit via trigger ou requête d'insertion SQL manuellement via php?), Est la meilleure solution d'audit ou existe-t-il une autre solution?
Pouvez-vous fournir un exemple comment créer une table history_prices
, alors quand je change le prix de item_options.option_price
- il sera stocké dans la table history_prices?
À l'heure actuelle, j'ai plus de 200 000 lignes dans la table item_options, dois-je copier les prix dans history_prices?
J'ai besoin d'un moyen efficace afin que les factures ne seront pas affectées par le nouveau changement de prix.
table item_options:
mysql> desc item_options;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| option_id | int(11) | NO | PRI | NULL | auto_increment |
| item_id | int(11) | YES | MUL | NULL | |
| option_name | varchar(100) | YES | | NULL | |
| option_price | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
table ordre_items:
mysql> desc order_items;
+----------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------+------+-----+---------+----------------+
| order_items_id | int(11) | NO | PRI | NULL | auto_increment |
| order_id | int(11) | NO | | NULL | |
| item_id | int(11) | NO | | NULL | |
| option_id | int(11) | NO | | NULL | |
+----------------+---------+------+-----+---------+----------------+
Merci pour les designs, lequel recommanderiez-vous ou enregistrez-vous le prix avec la commande elle-même? En ce qui concerne les nouvelles lignes .. comment cela peut-il être fait? Par exemple, si je change le nom de l'élément dans la table des éléments, est-ce que cela signifie que j'ai besoin d'ajouter des nouvelles lignes dupliquées dans la table des options? Pourquoi avez-vous ajouté des champs StartDate et EndDate (Il existe un champ ItemPriceID dans la table OrderItems) – user622378
Si vous avez une chance, pourriez-vous mettre à jour votre conception pour les tables orderitems sur ma rubrique de question précédente. Merci :) C'était très utile. – user622378