powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Клиент: проводки, остаток. Как лучше хранить остатки?
25 сообщений из 26, страница 1 из 2
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35410169
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!
Есть таблица клиентов, у каждого клиента есть в наличии количество различных предметов (кол-во ограничено, не более 100). И эти предметы могут прибывать/убывать (есть таблица оборотов этих предметов). Есть ли смысл сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов. Или всегда по запросу получать из таблицы оборотов?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35410825
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зависит от объёма данных в основном. Смотря что надо - если хранить, то они каждый раз будут персчитываться, что будет "тормозить", зато выборка мгнавенна. Если не расчитывать каждый раз - новые записи не отнимают ресурсов, но выборка тяжеловесна.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35410850
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чирфул, ты что, не заметил, что автор хочет вместо нормальной таблицы возиться со сводной, где каждый объект учета - столбец ?

Автору: нив коем случае! Можно спорить оразных подходах в определении остатков по датам, но ваша постановка вопроса в корне неверна изначально.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35410870
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительЧирфул, ты что, не заметил, что автор хочет вместо нормальной таблицы возиться со сводной, где каждый объект учета - столбец ?Оспади... И в голову не пришло. Может всётаки КлиентИД, ПредметИД ?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35411018
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfИ в голову не пришло. Может всётаки КлиентИД, ПредметИД ?
...сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов...Я это понял именно так, как написал.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35411991
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель Cheerful CalfИ в голову не пришло. Может всётаки КлиентИД, ПредметИД ?
...сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов...Я это понял именно так, как написал.

В практике разнообразные извращения встречаются, обычно они вызывают нападки усердно учивших теорию баз данных.

Вы можете сделать и сто полей для остатков, только надо учитывать, удобно ли будет из них данные извлекать. Нужен ли Вам такой "OLAP-куб"?

Опять же, таблица движения по счетам будет иметь аналогичную структуру, или более традиционную - МОЛ, ИД предмета, приход-расход?

Почему Вы не хотите рассматривать структуру БД в комплексе? Вне контекста Ваш вопрос вообще не имеет смысла. "Можно, всё можно..." (с)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35412466
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Спасибо за советы, буду остатки высчитывать. Медленнее, но верно :)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35417904
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_яВсем привет!
Спасибо за советы, буду остатки высчитывать. Медленнее, но верно :)

и все медленнее и медленнее?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35417908
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зато вернее и вернее! не будьте писсимистом.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35421636
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получившаяся схема мне не нравится, в первую очередь - отсутствием поля в таблице проводок, по которому бы можно было сделать кластерный индекс :(
Итак, описание таблиц:
1) Client - клиент
-ID - uniqueidentifier
2) OborotMoney - поступление денег на счет клиента
-ID - пока просто счетчик
-ID_Service - это ID игровой вещи, за которую со счета игрока спишутся деньги
-GUID_Client - ID клиента
-MoneyCount - сколько денег списали за игровые вещи
-ItemCount - сколько вещей зачислили за списанное количество денег
3) Service - игровые вещи
4) GameSet - игры
5) Player - клиенты в играх (игроки)
-ID_GameSet - ID игры
-GUID_Client (сори, не отобразил) - ID клиента
6) GameItemAction - расход игровых вещей в играх
-ID - счетчик
-ID_GameSet - игра, в которой расходуется предмет
-ID_Service - ID предмета
-GUID_Client (ID клиента, для расчета баланса вещей)
-ID_Player - ID игрока

Что не нравится: в таблицах OborotMoney, GameItemAction нет разумного кластерного индекса. Для расчета баланса определенной вещи необходимо расчитать все приходы вещей в таблице OborotMoney и отнять все расходы вещей из таблицы GameItemAction.

Буду рад советам :)
Заранее спасибо!
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35421951
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залыб схему что ли прикрепить..

P.S. В таблице OborotMoney за одну проводку может быть куплено >1 игровой вещи. В таблице GameItemAction игровые вещи расходуются по одной.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35421953
Kezya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Схема
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35422070
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов. Особенно если на вопрос "сколько осталось" надо отвечать гораздо чаще, чем обеспечивать приход/расход.

Ну а если о движке игрушки речь идет, то я бы даже и схему с выделением отдельного столбца на каждый предмет сразу не херил. Ведь там новые предметы вдруг и просто так не появляются ;-)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35422745
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операция "сколько осталось" будет выполняться действительно чаще, т.к. приход обеспечивает N предметов, а расход - по одной.

Новые предметы будут появляться достаточно редко, и все будут на учете. Именно поэтому и предположил выделить по столбцу под каждый игровой предмет.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35422827
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_япо столбцу под каждый игровой предмет.
кол-во столбцов и объем котрежа не ограничены?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35422889
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGP Новичок_япо столбцу под каждый игровой предмет.
кол-во столбцов и объем котрежа не ограничены?
имел в виду, добавить в таблицу Client поля Item1Cnt, Item2Cnt......
Не совсем понял, что Вы подразумеваете под объемом кортежа?
Полей будет не более 256, в ~8Кб они уложатся (2000-й sql server)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35424161
Чорный Бада
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriЯ люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов.
Формально в этом нет абсолютно никакой денормализации.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35424224
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. все же лучше остатки хранить?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35424233
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чорный Бада UrriЯ люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов.
Формально в этом нет абсолютно никакой денормализации.Ну почему же нет?
Ведь мы храним излишние данные, которые могут быть получены по таблице транзакций. Раз данные излишние хранятся, то структура ведь не соответствует какой-то там нормальной форме?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35424398
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палка о двух концах :(
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35432333
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сталкивался с такой проболемой, сначала сделал чтобы остатки считались динамически. С ростом объема базы, работать становилось невозможно. Поэтому, самый оптимальный вариант, который я лично всегда использую, это хранить таблицу движений по остаткам,а потом простым запросом получать остаток. Например:
ID товара, ID клиента, Количество, Вид движения (1 - приход, -1 - расход).
При такой структуре легко получаются остатки. Сами видите количество умножить на вид движения, даст либо плюс либо минус, а если все суммировать предварительно перемножив, получим остаток.
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35432757
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так у тебя и есть динамически!! Таблицы с остатками-то нету :)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35433104
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок_я
2) OborotMoney - поступление денег на счет клиента
-ID - пока просто счетчик
-ID_Service - это ID игровой вещи, за которую со счета игрока спишутся деньги
-GUID_Client - ID клиента
-MoneyCount - сколько денег списали за игровые вещи
-ItemCount - сколько вещей зачислили за списанное количество денег


А даты/времени проводки нет? Как тогда Вы планируете получать остатки-срезы на определенный момент?
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35436402
RodionAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 1С это реализовано в регистрах (в смысле учет остатков) и вроде бы все нормально, но когда записей в регистрах много, измерений в регистрах много и удаляешь или добавляешь документ далеко ранней датой (проводишь документ) пересчет регистра может идти достаточно долго. Я бухгалтерию делал на запросах (оборотно-сальдовую ведомость)- для меня нормально работает. Для обсуждения - 4000 проводок в месяц, з90 человек, план счетов около 3000 строк (счета, субсчета, шифры аналитики)
...
Рейтинг: 0 / 0
Клиент: проводки, остаток. Как лучше хранить остатки?
    #35441333
Новичок_я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин Новичок_я
2) OborotMoney - поступление денег на счет клиента
-ID - пока просто счетчик
-ID_Service - это ID игровой вещи, за которую со счета игрока спишутся деньги
-GUID_Client - ID клиента
-MoneyCount - сколько денег списали за игровые вещи
-ItemCount - сколько вещей зачислили за списанное количество денег


А даты/времени проводки нет? Как тогда Вы планируете получать остатки-срезы на определенный момент?

Здравствуйте. Разумеется, есть дата/время операции :)
Начал подумывать о сальдо - ежемесячно подсчитывать, делать свертку. И тогда актуальные остатки это сальдо + обороты
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Клиент: проводки, остаток. Как лучше хранить остатки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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