J'ai une application qui traite et stocke les commandes. Chaque commande est composée d'éléments de campagne comportant différents éléments tels que la tarification, le dimensionnement, les couleurs, etc. Ma question est de savoir comment conserver ces données au fil du temps sans les lier à des données sous-jacentes susceptibles d'être modifiées. Par exemple, quelqu'un commande quelque chose composé de 5 choses qui coûtent 1 $ chacune, pour un total de 5 $. Cependant, à un certain moment dans l'avenir, les coûts pour les choses individuelles changent à 0,50 $. Maintenant, quand j'apporte l'ancienne commande, le coût total est de 2,50 $ au lieu de 5 $. Initialement, je pensais simplement à ne pas permettre la mise à jour des tables enfants, mais ce n'est pas vraiment faisable car le prix est basé sur des grilles de prix énormes que le client veut seulement mettre à jour et ne pas en créer de nouveaux à chaque prix changements au moindre. Chaque grille de prix prend des heures à mettre en place et les prix changent tous les deux jours.Comment puis-je conserver les données dans le temps sans les rattacher aux données de tarification des produits sous-jacentes susceptibles d'être modifiées?
Une autre pensée est de sérialiser l'ensemble de la commande et de travailler à partir de cela. Cependant, cela rend difficile la mise à jour du système et tout changement. Les anciennes commandes ne s'afficheront plus correctement et pourraient même planter le système.
Ceci est un problème assez général et je suis à la recherche d'un point de vue des meilleures pratiques.
Ceci est correct. Une fois qu'une commande est postée, tout ce qui concerne cette commande devient inchangé: prix des articles, informations fiscales, informations sur les coupons, adresse de livraison, etc. Vous devriez pouvoir réimprimer la facture et obtenir exactement le même document qui a été imprimé auparavant. Cela ne crée pas de redondances dans le modèle relationnel, car le «prix actuel de X» est différent de «prix de ligne de commande Z», même si les valeurs sont identiques en ce moment. –