Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Доход-Расход=Остаток. Как хранить и вычислять? / 12 сообщений из 12, страница 1 из 1
16.06.2009, 16:08
    #36043962
Trabuditor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
В моей базе в одной из таблиц будет операция, указанная в сабже. Можно сказать что вся таблица будет посвящена именно одной только этой операции (поля: Дата, Доход, Расход, Остаток (влияет на результат вычисления следующей строки). Причем нужно иметь возможность изменять остаток на любую дату, при этом конечный остаток должен соответственно пересчитываться. Отчетный период - один месяц, то есть при начале следующего месяца будет браться уже сохраненный остаток на конец предыдущего. Вопрос состоит в том, что делать с полем Остаток. Высчитывать его процедурой и хранить в таблице? Считать SQL запросом? Переложить вычисление на клиента и опять же писать в базу? Посоветуйте плиз, что грамотнее и быстрее. Спасиб :).
...
Рейтинг: 0 / 0
16.06.2009, 16:55
    #36044155
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
...
Рейтинг: 0 / 0
16.06.2009, 17:14
    #36044243
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Посмотрите эту ссылку и еще один топик автора.
...
Рейтинг: 0 / 0
17.06.2009, 02:27
    #36044915
Trabuditor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Спасибо всем за ссылки. Посмотрел, но это немного не то. Моя задача - это не бухучет на предприятии и не движение ТМЦ. Мне нужно знать и видеть остаток на счете на КАЖДЫЙ божий день. Я пишу программу по учету личных финансов, а в таких делах очень важно видеть остатки на каждый день и изменять их на любую дату, единственное, что это все только внутри одного месяца. По окончании месяца остаток на счете переходит на следующий месяц и предыдущий месяц в расчетах участвовать уже не будет. Вот мне и интересно, при среднем количестве записей по счету 300 штук ( не тысяч, а именно штук) в месяц, что лучше - вычислять или хранить прямо в базе в явном виде.
...
Рейтинг: 0 / 0
17.06.2009, 02:51
    #36044923
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
TrabuditorВот мне и интересно, при среднем количестве записей по счету 300 штук ( не тысяч, а именно штук) в месяц, что лучше - вычислять или хранить прямо в базе в явном виде.Даже если Вы будете хранить их в текстовом файле, с такими объемами на современных компьютерах можно смело все расчёты делать с нуля, лет эдак 100.
...
Рейтинг: 0 / 0
17.06.2009, 03:13
    #36044932
Trabuditor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Cha, вы знаете, существуют разработчики, которые и с таким объемом данных умудряются делать жутко тормозные программы, а потом их еще и продавать . Хотелось бы избежать такого и сделать изначально все правильно.
...
Рейтинг: 0 / 0
17.06.2009, 08:15
    #36044993
Дмитрий16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Предлагаю:
1. Остаток из базы выкинуть. и не хранить его в явном виде.
2. Приход и расход - это одно поле. + - приход, минус - расход.
3. Любая модификация за любую дату - просто добавление записи. (даже для исправления ошибок)
4. Сделать алгоритм рассчета остатков на каждый день. (Возможно закэшировать результаты помесячно)
...
Рейтинг: 0 / 0
17.06.2009, 08:28
    #36045004
Trabuditor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
1. Остаток из базы выкинуть. и не хранить его в явном виде
Думаю, что я так и сделаю, но хранить все же буду только остатки на начало и на конец месяца.
2. Приход и расход - это одно поле. + - приход, минус - расход.
В этом случае придется добавлять поле идентификатора операции (приход или расход) для нормальной работы с отчетами...
3. Любая модификация за любую дату - просто добавление записи. (даже для исправления ошибок)
С этим согласен полностью, так и хотел.
Сделать алгоритм рассчета остатков на каждый день. (Возможно закэшировать результаты помесячно)
Вот тут мне интересен следующий момент. Допустим, я закрываю месяц, у меня образовался остаток на конец этого месяца, который переходит на начало следующего. Кэшируем предыдущий месяц (спускаем его в архив путем создания дублирующей таблицы, которую можно просматривать, но нельзя изменять данные). Вопрос в том, что будет если мне вдруг понадобится отредактировать остаток на дату в уже закрытом периоде. Я так примерно представляю, что нужно этот период каким-то образом перенести в редактируемую форму, исправить остаток на дату - соответственно исправится остаток на конец этого периода и на начало следующего. Как это сделать - мне неясно. Если же тупо править остаток в текущем месяце, то архивные данные будут некорректны. Как вот тут поступить?
...
Рейтинг: 0 / 0
17.06.2009, 14:58
    #36046137
Дмитрий16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Trabuditor... Если же тупо править остаток в текущем месяце, то архивные данные будут некорректны. Как вот тут поступить?

Основная идея такова:
1. Идут операции за месяц. (без учета предыдущих)
2. Результаты операций за месяц ты кэшируешь (если MS SQL - то можно попытаться выкурить материализованную вьюшку)
3. Итого: табличка с данными остатков по месяцам. и табличка с конкретными операциями в этом месяце.

4. МЫСЛЬ!!! даже за 100 лет * 12 месяцев = 1200 всего записей! так что их можно и каждый раз суммировать.

Если неочень внятно написал - моя мысль - не хранить наростающие итоги. а хранить некие суммы операций за месяц. Таким образом для получения остатков на любое число надо будет ссуммировать все предыдущие месяцы (это будет остаток на начало месяца) + ссуммировать все операции конкретного месяца до нужной даты.
...
Рейтинг: 0 / 0
17.06.2009, 15:38
    #36046244
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Об этом как раз мой первый пост, честно содрана идея 1С
С уважением, Naf
...
Рейтинг: 0 / 0
17.06.2009, 17:27
    #36046610
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
При таком объеме- вычислять, конечно.
Еще, судя по вашим словам, клиенту захочется независимо от количества введеных данных, вычислять остатки к заданной дате. То есть можно ввести данные за целый месяц, а считать к середине месяца. Так что этот счет должен инициироваться с клиента. Я бы предпочел сделать процедуру на сервере. Ее можно вызывать с клиента, а также использовать (в другой процедуре) при переходе в следующий период (начальное состояние + операции => конечное сосотяние; потом вводим новый период и конечное состояние уже старого периода переходит в начальное состояние нового периода).
да, и еще- Подумайте, прежде чем делать архивные таблицы, перекидывать туда инфу и пр. Это усложнение логики с одной стороны; ну а с другой стороны современные СУБД переносят достаточно большие объемы данных, не теряя производительности.
...
Рейтинг: 0 / 0
17.06.2009, 17:36
    #36046649
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доход-Расход=Остаток. Как хранить и вычислять?
Trabuditor.. но хранить все же буду только остатки на начало и на конец месяца.
остатки на конец месяца = начальное состояние следующего. Имеет смысл хранить только одно. Начальное, как правило.

Trabuditor
Вопрос в том, что будет если мне вдруг понадобится отредактировать остаток на дату в уже закрытом периоде. Я так примерно представляю, что нужно этот период каким-то образом перенести в редактируемую форму, исправить остаток на дату - соответственно исправится остаток на конец этого периода и на начало следующего. Как это сделать - мне неясно. Если же тупо править остаток в текущем месяце, то архивные данные будут некорректны. Как вот тут поступить?Остаток вообще не надо править, имхо. Надо править операцию, а потом перевычислять остаток. Поэтому, если нет "архивных" таблиц, а информация находится в одной таблице в которой есть идентификатор периода (месяца), то делать перевычисление легче.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Доход-Расход=Остаток. Как хранить и вычислять? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]