Is it better to have a field in the database that stores the customers account balance or use views and queries to generate the information.
For performance, I'd say both. Keep a log of all the transactions (in a separate table) but maintain a field in the customer record that stores the current balance that gets refreshed when you add more transactions.