Re: Баланс клиента: хранить или вычислять
От: WMikhailov  
Дата: 28.01.12 12:46
Оценка: -1
Здравствуйте, merge, Вы писали:

M>Вот есть у нак таблица Карты.

M>И есть таблица ОперацииПоКартам, в которой есть дата и сумма операции

M>Вот задался вопросом о получении баланса по карте.

M>Как лучше? сделать поле Balance в таблице Карты и изменять его после каждой операции или же динамически вычеслять баланс на основании операций?

Конечно, нужно хранить баланс клиента, а не вычислять его каждый раз. Для проверки корректности баланса существует таблица с операциями.
Причин несколько. Первой назову время получения баланса при подсчёте по операциям — с каждым разом оно будет расти. Вторая причина — как следствие первой — нагрузка на базу. Третья — обобщающая — представьте, что клиентов много..
Ну, и посмотрите на существующий удачный опыт (у сотовых операторов, у банков, у интернет-провайдеров) — баланс должен быть всегда доступен для клиента в его личном кабинете (а не скрыт) — ведь это _его_ деньги (и доверие конторе, и удобство, и т.д.)

P.S.: более того, если есть закрывающиеся периоды, то следует хранить и остатки на начало и конец периода. Как и сумму в рублях следует хранить, если при операции была конверсия, хотя и известна сумма в валюте и известен курс этой валюты. Вот так.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.