|
|
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Есть таблица клиентов, у каждого клиента есть в наличии количество различных предметов (кол-во ограничено, не более 100). И эти предметы могут прибывать/убывать (есть таблица оборотов этих предметов). Есть ли смысл сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов. Или всегда по запросу получать из таблицы оборотов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 21:11:05 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
зависит от объёма данных в основном. Смотря что надо - если хранить, то они каждый раз будут персчитываться, что будет "тормозить", зато выборка мгнавенна. Если не расчитывать каждый раз - новые записи не отнимают ресурсов, но выборка тяжеловесна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 10:29:36 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Чирфул, ты что, не заметил, что автор хочет вместо нормальной таблицы возиться со сводной, где каждый объект учета - столбец ? Автору: нив коем случае! Можно спорить оразных подходах в определении остатков по датам, но ваша постановка вопроса в корне неверна изначально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 10:35:32 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЧирфул, ты что, не заметил, что автор хочет вместо нормальной таблицы возиться со сводной, где каждый объект учета - столбец ?Оспади... И в голову не пришло. Может всётаки КлиентИД, ПредметИД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 10:41:36 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Cheerful CalfИ в голову не пришло. Может всётаки КлиентИД, ПредметИД ? ...сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов...Я это понял именно так, как написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 11:20:17 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель Cheerful CalfИ в голову не пришло. Может всётаки КлиентИД, ПредметИД ? ...сделать в таблице клиентов набор полей по каждому из предметов, в котором будет храниться остаток этих предметов...Я это понял именно так, как написал. В практике разнообразные извращения встречаются, обычно они вызывают нападки усердно учивших теорию баз данных. Вы можете сделать и сто полей для остатков, только надо учитывать, удобно ли будет из них данные извлекать. Нужен ли Вам такой "OLAP-куб"? Опять же, таблица движения по счетам будет иметь аналогичную структуру, или более традиционную - МОЛ, ИД предмета, приход-расход? Почему Вы не хотите рассматривать структуру БД в комплексе? Вне контекста Ваш вопрос вообще не имеет смысла. "Можно, всё можно..." (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 16:16:26 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Спасибо за советы, буду остатки высчитывать. Медленнее, но верно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 19:07:42 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Новичок_яВсем привет! Спасибо за советы, буду остатки высчитывать. Медленнее, но верно :) и все медленнее и медленнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 15:17:33 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
зато вернее и вернее! не будьте писсимистом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 15:18:31 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Получившаяся схема мне не нравится, в первую очередь - отсутствием поля в таблице проводок, по которому бы можно было сделать кластерный индекс :( Итак, описание таблиц: 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. Буду рад советам :) Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 19:48:55 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Залыб схему что ли прикрепить.. P.S. В таблице OborotMoney за одну проводку может быть куплено >1 игровой вещи. В таблице GameItemAction игровые вещи расходуются по одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 06:40:59 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Схема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 06:44:18 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Я люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов. Особенно если на вопрос "сколько осталось" надо отвечать гораздо чаще, чем обеспечивать приход/расход. Ну а если о движке игрушки речь идет, то я бы даже и схему с выделением отдельного столбца на каждый предмет сразу не херил. Ведь там новые предметы вдруг и просто так не появляются ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 09:02:59 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Операция "сколько осталось" будет выполняться действительно чаще, т.к. приход обеспечивает N предметов, а расход - по одной. Новые предметы будут появляться достаточно редко, и все будут на учете. Именно поэтому и предположил выделить по столбцу под каждый игровой предмет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 13:06:18 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Новичок_япо столбцу под каждый игровой предмет. кол-во столбцов и объем котрежа не ограничены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 13:31:08 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
KGP Новичок_япо столбцу под каждый игровой предмет. кол-во столбцов и объем котрежа не ограничены? имел в виду, добавить в таблицу Client поля Item1Cnt, Item2Cnt...... Не совсем понял, что Вы подразумеваете под объемом кортежа? Полей будет не более 256, в ~8Кб они уложатся (2000-й sql server) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 13:48:44 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
UrriЯ люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов. Формально в этом нет абсолютно никакой денормализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 21:45:51 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Т.е. все же лучше остатки хранить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 22:59:31 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Чорный Бада UrriЯ люблю таблицы остатков. И считаю, что вполне допустимо денормализовать структуру, создав отдельную табличку остатков предметов. Формально в этом нет абсолютно никакой денормализации.Ну почему же нет? Ведь мы храним излишние данные, которые могут быть получены по таблице транзакций. Раз данные излишние хранятся, то структура ведь не соответствует какой-то там нормальной форме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 23:07:51 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Палка о двух концах :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2008, 06:58:08 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Я сталкивался с такой проболемой, сначала сделал чтобы остатки считались динамически. С ростом объема базы, работать становилось невозможно. Поэтому, самый оптимальный вариант, который я лично всегда использую, это хранить таблицу движений по остаткам,а потом простым запросом получать остаток. Например: ID товара, ID клиента, Количество, Вид движения (1 - приход, -1 - расход). При такой структуре легко получаются остатки. Сами видите количество умножить на вид движения, даст либо плюс либо минус, а если все суммировать предварительно перемножив, получим остаток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 22:30:46 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Так у тебя и есть динамически!! Таблицы с остатками-то нету :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2008, 09:54:04 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Новичок_я 2) OborotMoney - поступление денег на счет клиента -ID - пока просто счетчик -ID_Service - это ID игровой вещи, за которую со счета игрока спишутся деньги -GUID_Client - ID клиента -MoneyCount - сколько денег списали за игровые вещи -ItemCount - сколько вещей зачислили за списанное количество денег А даты/времени проводки нет? Как тогда Вы планируете получать остатки-срезы на определенный момент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2008, 11:23:13 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
В 1С это реализовано в регистрах (в смысле учет остатков) и вроде бы все нормально, но когда записей в регистрах много, измерений в регистрах много и удаляешь или добавляешь документ далеко ранней датой (проводишь документ) пересчет регистра может идти достаточно долго. Я бухгалтерию делал на запросах (оборотно-сальдовую ведомость)- для меня нормально работает. Для обсуждения - 4000 проводок в месяц, з90 человек, план счетов около 3000 строк (счета, субсчета, шифры аналитики) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 12:46:33 |
|
||
|
Клиент: проводки, остаток. Как лучше хранить остатки?
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Новичок_я 2) OborotMoney - поступление денег на счет клиента -ID - пока просто счетчик -ID_Service - это ID игровой вещи, за которую со счета игрока спишутся деньги -GUID_Client - ID клиента -MoneyCount - сколько денег списали за игровые вещи -ItemCount - сколько вещей зачислили за списанное количество денег А даты/времени проводки нет? Как тогда Вы планируете получать остатки-срезы на определенный момент? Здравствуйте. Разумеется, есть дата/время операции :) Начал подумывать о сальдо - ежемесячно подсчитывать, делать свертку. И тогда актуальные остатки это сальдо + обороты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2008, 18:50:30 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1543762]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 357ms |

| 0 / 0 |
