Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Финансовый Баланс
Форумы портала PHP.SU » » Вопросы новичков » Финансовый Баланс

Страниц (1): [1]
 

1. pantela - 07 Мая, 2014 - 12:14:21 - перейти к сообщению
Делается инет. магазин, стоит задача для пользователей сделать Финансовый Баланс.

Попробую описать логику:
Пользователь пополняет счёт, далее может оплатить за продукт. Продукт имеет определённую цену.

Ну я понимаю что можно создать таблицу напр. tansfers и в ней хранить всё пополненные и оплаченные операции.

Но стоит вопрос, как считать текущий баланс, конечно можно пробежать запросом по всем записям таблицы tansfers и от поступившей суммы отнять сумму всех оплаченные операции, но на сколько это будет нагружено, т.к. очень много будут клиентов и у всех свои записи.

Ещё думал сделать отл. поле в таблице пользователей, и там хранить текущий баланс, т.е. при операции что бы 1 раз посчиталось бы и там хранилось бы (т.е. как дельта поле)...

Что сможете посоветовать?
2. IGORtrue - 07 Мая, 2014 - 12:19:41 - перейти к сообщению
Мне кажется нужно отдельное поле для текущего баланса, а также таблица для хранения всех операций, всех пользователей.
3. caballero - 07 Мая, 2014 - 13:17:50 - перейти к сообщению
финансовый баланс высчитывается не каждую секунду
пересчитывайте таблицу и все дела
4. Stierus - 07 Мая, 2014 - 13:51:48 - перейти к сообщению
у пользователя есть счет (один или несколько - не важно), у этого счета есть текущий баланс и история транзакций .
5. pantela - 07 Мая, 2014 - 19:32:34 - перейти к сообщению
caballero пишет:
финансовый баланс высчитывается не каждую секунду
пересчитывайте таблицу и все дела

Ну смотря какая задача, напр. тот же отсчёт финансовый мне надо выводить в jqGrid, где идёт активная работа запросов

IGORtrue пишет:
Мне кажется нужно отдельное поле для текущего баланса, а также таблица для хранения всех операций, всех пользователей.

Stierus пишет:
у пользователя есть счет (один или несколько - не важно), у этого счета есть текущий баланс и история транзакций .

Счёт один. т.е. делать поле где статический при каждой операции баланс будет обновляться, при этом для вывода текушего баланса не потребуется перечитывать записи и сразу выводить да?
А если несколько счётов надо что бы было, тогда создать ещё таблицу счётов и там перечислять счета и связать всё это JOIN-ом?
6. caballero - 07 Мая, 2014 - 20:36:37 - перейти к сообщению
Цитата:
Ну смотря какая задача, напр. тот же отсчёт финансовый мне надо выводить в jqGrid, где идёт активная работа запросов

шо сие такое "активная работа запросов" и какая разница куда выводить?
попробуйте все таки прочитать то что вам пишут
7. pantela - 08 Мая, 2014 - 10:00:02 - перейти к сообщению
Я прочитал и вроде ваше мнение одно из описаных моих вариантов.

caballero пишет:
шо сие такое "активная работа запросов" и какая разница куда выводить?
jqGrid это таблица, в которой постоянно работают несколько пользователей, и при работе происходит действия которые выполняют запросы в БД (это я имел под "активная работа запросов")
8. Stierus - 08 Мая, 2014 - 12:32:47 - перейти к сообщению
Цитата:
Счёт один. т.е. делать поле где статический при каждой операции баланс будет обновляться, при этом для вывода текушего баланса не потребуется перечитывать записи и сразу выводить да?
А если несколько счётов надо что бы было, тогда создать ещё таблицу счётов и там перечислять счета и связать всё это JOIN-ом?


В отдельной таблице счет и пользователь должны лежать в любом случае, это же разные вещи ... как у пользователя может не быть счетов (их может быть несколько), так и счет можно привязывать не к пользователям (благотворительный фонд или акция не будут являться пользователями на вашем ресурсе, но будут иметь счет)

У счета есть текущий баланс - по сути это горячий кэш агрегации всех транзакций по нему. Изначально счет создается с нулевым балансом, потом к нему привязываются транзакции, при каждой привязке транзакции ты меняешь значение текущего баланса. Итого таблиц у тебя 3: пользователь, счет, транзакция по счету + таблицы связей
(Добавление)
думаю, не стоит говорить, что все операции с счетами и платежами должны еще и логироваться и проходить внутри транзакций бд?
9. caballero - 08 Мая, 2014 - 14:00:22 - перейти к сообщению
еще раз для тех кто в танке

финансовый баланс не та информация которая лежит на сайте и которую просматриваю тысячи пользователей и ее надо кешировать или делать предварительный пересчет
нет никакого смысла хранить остатки с риском что остатки разойдутся с оборотами.

достаточно просто пересчитывать обороты.

Цитата:
qGrid это таблица, в которой постоянно работают несколько пользователей, и при работе происходит действия которые выполняют запросы в БД (это я имел под "активная работа запросов")

это никак не относится к сути вопроса.
Каким чудом в jqGrid могут работать несколько пользователей ОДНОВРЕМЕННО оставляю тем у кого хорошо развита фантазия.
10. pantela - 13 Мая, 2014 - 20:02:17 - перейти к сообщению
caballero пишет:
Каким чудом в jqGrid могут работать несколько пользователей ОДНОВРЕМЕННО

несколкьо пользователей работаю с одной таблицей и возможно с одной записей...
11. caballero - 13 Мая, 2014 - 21:34:55 - перейти к сообщению
Цитата:
несколкьо пользователей работаю с одной таблицей и возможно с одной записей...

Вася, jqGrid - клиентский компонент в браузере. как с ним могут работать несколько человек? перехватывая друг у друга клавиатуру?
12. OrmaJever - 14 Мая, 2014 - 17:01:51 - перейти к сообщению
caballero
caballero пишет:
pantela пишет:
несколкьо пользователей работаю с одной таблицей и возможно с одной записей...


Вася, jqGrid - клиентский компонент в браузере. как с ним могут работать несколько человек? перехватывая друг у друга клавиатуру?

а речь шла о клиентском компоненте? несколько пользователей одновременно работают с одной таблицей в бд, один записал второй прочитал, так сложно понять что речь об этом?

 

Powered by ExBB FM 1.0 RC1