7 votes

Meilleure façon de maintenir le solde du compte d'un client

Est-il préférable d'avoir un champ dans la base de données qui stocke le solde du compte du client ou d'utiliser des vues et des requêtes pour générer l'information ?

8voto

Oli Points 65050

Pour les performances, je dirais les deux. Conservez un journal de toutes les transactions (dans une table séparée) mais conservez un champ dans l'enregistrement du client qui stocke le solde actuel et qui est actualisé lorsque vous ajoutez de nouvelles transactions.

8voto

UnkwnTech Points 21942

Dans le cadre d'un projet sur lequel j'ai travaillé, nous avons stocké le solde actuel dans un champ, et toutes les transactions dans une autre table, mais en raison du niveau d'importance que ce projet avait pour que les données soient parfaites à 100% (ou mieux), nous avons également stocké un hachage du solde dans un autre champ et le hachage était comparé à chaque fois qu'il était appelé pour garantir l'intégrité, et s'il ne correspondait pas, il était recalculé à partir de la table des transactions, puis envoyé au département de support client pour examen.

3voto

Simon Keep Points 4563

Je pense que cela dépend de beaucoup de facteurs, combien de fois allez-vous accéder au solde, quelle est la complexité de le recalculer à chaque fois que vous en avez besoin. Quels sont les frais généraux liés à l'existence de vues, etc.

Sur la base des informations que vous avez fournies, je stockerai la valeur car recalculer la valeur à chaque fois peut être pénible.

3voto

Pittsburgh DBA Points 2342

"Ça dépend". Le plus souvent, vous voulez éviter les données dérivées. Cependant, il y a des cas où avoir le total dérivé est justifié.

Un exemple concret :

J'ai travaillé sur une application de base de données de crédit, où le solde était composé de plusieurs choses différentes, et de différentes règles de gestion dans le temps. Par exemple, le "solde" était en fait une somme de différents soldes provenant de différentes catégories, comme le capital, les frais, etc.

Au fur et à mesure que les transactions étaient comptabilisées, elles étaient affectées à différents compartiments en fonction de règles commerciales. Les frais allaient dans le compartiment des frais. Les achats, les crédits et les débits allaient dans la partie principale. Ces affectations et règles étaient susceptibles d'être modifiées au fil du temps.

Imaginez que vous puissiez interroger à la volée 100 000 soldes de clients alors que les règles de gestion évoluent au fil du temps. Il s'agit d'un cas concret où la valeur dérivée a un sens. Nous avons maintenu un ensemble d'algorithmes pour "remonter" le compte et reconstruire le solde chronologiquement à des fins d'audit et de vérification, mais ce n'était rien que vous voudriez faire pour de grands ensembles.

2voto

asalamon74 Points 3499

Si les vues et les requêtes vous donnent des résultats suffisamment rapides, ne les stockez pas dans un champ séparé.

Si ce n'est pas assez rapide, stockez-le dans un champ séparé. Comme ce champ stockera des informations redondantes, il est très important de le garder synchronisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X