powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / методы борьбы с отрицательными остатками
24 сообщений из 24, страница 1 из 1
методы борьбы с отрицательными остатками
    #32519986
Фотография Ork Yason
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотелось бы узнать как АЛЛ борется с сабжем...

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

(в данный момент интересует реализация в оракле 8м)


---------------
Мы - это наши желания. Зигмунд Фрейд
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32520281
olk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кхм ... а где с эим надо бороться ?
и что в оракле check констраэйн уже не работает ?
а если это совокупность каких либо действий - то обнавляете через процедуру и если сработает констрэейн на чек<0 в ексепшине делайте ролбак ...
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32521471
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это наверное сделали без хранимых остатков, типа остаток - расчетная величина. Отсюда и траблы: нет поля - нет ограничения. Выход - хранить остаток.
Это все мои догадки, и мое ИМХО.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32521690
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делать в два этапа:
1.проверить на нехватку товара
2.если таковой нет, то учесть документ. :)
... ну учёт будет работать на 30% медленее :(
делать проверку в конце процедуры и делать откат - нехорошо (ИМХО)

Предусмотреть возможность появления минусовых остатков - очень важный
и нужный момент и проектировать надо именно с такой возможностью...
Возражающим: Не надо говорить, что это нонсенс !.. :)
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32521733
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2LSV
>Возражающим: Не надо говорить, что это нонсенс !.. :)
Как правило, это не нонсенс, а уголовное преступление. 8-)
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32522917
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
остатки можно не хранить, а хранить обороты...
исх сальдо = приход-расход > 0
Можно усложнить систему вплоть до реализации активных/пассивных остатков - это просто и даже овердрафта. Все постороить на check constraint
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32527313
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обслуживаю две системы:
1. OLTP. Стандартный триггер на Insert,update проверяющий в БД текущих остатков на <0
2. DWH. Просто все запросы организованы с where Ost>0. Отрицательные сразу исключаются(которые все же возникли в OLTP(), но таких мало - 0.000006% за 2003 год.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32527474
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Quark
А зачем так нагружать систему проверками (которые кстати можно делать периодически для профилактики)? Зачем для ответа на запрос "сколько у меня этого" система должна просчитать весь приход/расход за какой то период? ИМХО проще пересчитать один раз при модификации и пользоваться готовым.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32527513
Фотография Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня актульные остатки хранятся в отдельной таблице, очень удобно.
Соответсвенно контроль за остатками очень прост.
При создании расходного/приходного документа остатки изменяются.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32531600
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм. что интересно. В банке может быть как отрицательная позиция, так и положительная. Соотвественно, каждая позиция (короткая, длинная) ограничивается свое собственной величиной, которая описывает максимальный допустимый риск в денежной величине.

это я все к тому, что реально, отрицательная (короткая) позиция вполне может существовать.

насчет остатков - мне кажется, что хранение остатков на конец дня (End Of Day, EOD) более оправдано, чем хранение актуальных остатков, т.к. позволяет значительно повысить быстродействие в мультипоточных системах (n-tier) с больших количеством бизнес-транзакций. ну а ночью (EOD) вполне можно провести вычисление остатков по новым данным.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32531745
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AAron
насчет остатков - мне кажется, что хранение остатков на конец дня (End Of Day, EOD) более оправдано, чем хранение актуальных остатков, т.к. позволяет значительно повысить быстродействие в мультипоточных системах (n-tier) с больших количеством бизнес-транзакций. ну а ночью (EOD) вполне можно провести вычисление остатков по новым данным.
А хранение остатков на конец часа еще более повысит? Какой смысл при каждом запросе считать что-то? Почему при модифицирующей транзакции (которых обычно на порядки меньше чем читающих) сделать X=X+Y это долго и непроизводительно, а вот при каждой читающей транзакции делать X=Xn+Y-Y1+Y2-Y3......+-Yn -это быстро и производительно?
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32534564
immutable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что ситуация вполне нормальная и ограничениями с ней бороться не получится.
Есть тупой кассовый аппарат, который позволяет
кассиру забивать руками код товара.
Кассир ошибается и вводит вместо Балтики №3, Балтику №7.
Отсюда появляется отрицательный остаток по Балтике №7.
Причем ситуация возможно, даже если терминал работает в режиме on-line.

И что делать? Не давать провести транзакцию или загрузить в пакетном режиме операции по кассе?

Думаю, что надо давать вводить такие операции, а потом отдельным документом исправлять ситуацию.
По моему такие ситуации называются пересортицей.


Владимир
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32535866
Фотография Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКассир ошибается и вводит вместо Балтики №3, Балтику №7.
Отсюда появляется отрицательный остаток по Балтике №7.

А почему бы сразу не сообщить кассиру, что нет у него Балтики №7 ?
Пусть введет правильный код товара и все.
Зачем весь этот геморрой с пересортицей ?
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32537867
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА почему бы сразу не сообщить кассиру, что нет у него Балтики №7 ?
А ежели ошибку сделал не кассир?
Представляете: вы стоите у кассы с Балтикой7. Кассир ее вбивает а терминал говорит, мол нету такого на остатках.
и начинается: кассир срочно или зовет кого-то старшего и они пытаются списать что-нибудь другое итп.

Мне как программисту такие ситуации прикольно наблюдать когда не торопишся и это твою бутылку ищут. Возникает мысль что видимо программеру не доплатили, бизнесс логику не продумали итп.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32537897
Фотография Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМне как программисту такие ситуации прикольно наблюдать когда не торопишся и это твою бутылку ищут. Возникает мысль что видимо программеру не доплатили, бизнесс логику не продумали итп.

Мне кажется не доплачивают не программеру, а тому чуваку, который приходовал эту балтику в компьютер, вот ему и по барабану №7 или №3, потом если че разберемся, или не доплачивают кладовщику который принимает этот товар, а если кладовщик и тот чувак - одно и тоже лицо, то это вообще жопа.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32538200
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За такие "по барабану" скорее уж не доплачивать надо, а по башке.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32538210
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Quark
Представляете: вы стоите у кассы с Балтикой7. Кассир ее вбивает а терминал говорит, мол нету такого на остатках.
У нас недавно большой магазин открылся и все ессно только отлаживалось. Покупал я там продукты и кассирша не смогла найти в компе какие то консервы. Просто попросила оставить их у нее на кассе. ИМХО великолепное решение проблемы. 8-)
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32538580
Фотография Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПросто попросила оставить их у нее на кассе.
Без комментариев, я лежу
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32538694
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рад что так развеселил, особенно в пятницу. 8-)
Только не особо понял, чем?
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32541150
Фотография Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто представил картинку,
консервы-то ты так и не попробовал ?
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32541785
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Серега
Я не зря говорил про n-tier. когда приходит сделка, я не знаю на уровне базы данных на какой "счет" ее внести, тем более, что таких может быть несколько. Хотя решение с мгновенным расчетом вполне может существовать, но вряд ли так легко получится его встроить в нашем проекте :(
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32542055
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Вася
Просто представил картинку, консервы-то ты так и не попробовал ?
Фу, какой ты... 8-)

2AAron
Я не зря говорил про n-tier. когда приходит сделка, я не знаю на уровне базы данных на какой "счет" ее внести, тем более, что таких может быть несколько.
А если просто количество считать сразу, а счета проставлять потом? Это ж все таки разные вещи.

Хотя решение с мгновенным расчетом вполне может существовать, но вряд ли так легко получится его встроить в нашем проекте :(
Да понятно, что у всех свои заморочки и советовать что либо не зная проекта глупо. Просто мне кажется, что с точки зрения "примитивной логики" проще и производительнее считать один раз , чем каждый раз . К тому же на готовый результат проще повесить примитивное ограничение на >=0 (если оно нужно), котрое работает быстрее и надежнее любого варианта с процедурой проверки.
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32557897
Фотография Ork Yason
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покумекал я тут, продолжительно...
вас почитал...
и родил...

добавил табличку, в которой ведется история остатков по партиям, которая обновляется после каждой проведенной операции...

а потом запросиком:

select code_goods, sum(countg), g.title_short, code_ware
from docs_ost d, goods g
where p_date =
(
select max(p_date)
from docs_ost d2
where d2.code_goods = d.code_goods and d2.from_code_doc = d.from_code_doc) and d.code_goods = g.code
group by code_goods, g.title_short, code_ware

мы имеем все остатки на текущий момент...
если по конкретному товару то будет значительно быстрее...

берем страшный вариант, мол контора много пищущая, мне говорили про реальность в 500документов в день...
так вот в таком случае, на скока будет это все дело шустро работать на оркале8/9???
меня пугает конструкция вложенного селекта...

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

Мы - это наши желания. Зигмунд Фрейд
...
Рейтинг: 0 / 0
методы борьбы с отрицательными остатками
    #32558046
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай тут
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / методы борьбы с отрицательными остатками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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