I apologize if this has been asked before, but I’m pretty new to this and unable to find an answer that addresses the situation I’m faced with.
I’m trying to put together a database to run behind our company website. The database will store information on customer invoices and payments. I’m trying to figure out if I should create a field for the invoice balance, or if I should just have it calculate when the customer account is accessed? I don’t want to create redundant data, and don’t want to have the chance that somehow the field wouldn’t be updated, and would thus be incorrect…but I also don’t want to create to large of a burden on the server – especially if we pull up an overview of customer accounts – which would need to then calculate the balance of every account. Right now we are starting from scratch, so I want to set it up right!
We are anticipating having a couple hundred customer accounts by the end of the year, but will most likely be up to a couple thousand by the end of next year. (Average number of invoices per customer would be roughly 2-3 per year.)
There are probably other things to consider as well. For example, what if your invoice consist of ID’s of products in another table… and the prices of those other products change? When you go to generate the invoice, you’ll have the wrong total in there for what the guy actually paid 6 months ago. So if its a situation like that, you’ll probably want to store the total on the invoice. And I wouldn’t worry too much about doing a little math if you go the other route, it’s not likely to be a huge bottleneck.