|
|
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Доброго времени, коллеги. Подскажите возможные варианты.. Требуется организовать «склад». Учета материалов. Вот примерный вариант: "склад""накладная""ведомость" код склада код накладной код накладной материал дата материал количествокод складаколичествокод операции (приход; расход; перемещение и т.д.)кладовщик склад – это по сути текущее остатки (состояние склада) Далее «накладная» - это группировка для ведомости. Ну и зависимая от накладной «ведомость» - по сути, расшифровка содержимого накладной. В общем то, выстроить логику не сложно – формируя ведомость обновлять склад.. Вопрос в другом: Требуется отображать данные в виде: Дата Склад материал на начало приход расход остаток на конец. Вот тут я задумался.. Имея текущее состояние склада мы не имеем его историю, ответ на вопрос «что было со складом хх числа хх года» уже не так тривиален, потребуется перебирать таблицы движений (накладные + ведомости), не уверен что это есть хорошо в условиях большого количества записей. Думал создать избыточную таблицу как просят Дата Склад материал на начало приход расход остаток на конец. И писать её при движении материалов, но, такая таблица даст данные только на те даты, в которых было движение и то, по тем материалам по которым было движение.. Ну и вопрос «а когда её заполнять, если нет движения.. повесть задание на 12 ночи»? Требуется: датаскладматериал ост.на начало приход расход ост.на конец20/05/2010 0104-1 0005689 150 50 30 17021/05/2010 0104-1 0005689 170 0 0 17022/05/2010 0104-1 0005689 170 40 0 21023/05/2010 0104-1 0005689 210 0 50 160 Т.е. показать на любой период/число наличие материалов не смотря на их движение Может кто вариант предложит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 12:15 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
если интересует вопрос: stells2Имея текущее состояние склада мы не имеем его историю, ответ на вопрос «что было со складом хх числа хх года» тогда включить в таблицу склад 2 поле: date_from, date_to и по текущие состояние на складе по товару указать date_to = \'31.12.3000\' например, тогда ответ будет простым: Код: plsql пример: 1515001.01.201205.06.20121510006.01.201203.09.2012159004.09.201231.12.3000 подробно про структуру date_from, date_to /topic/936874&pg=1&hl=31 12 3000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:02 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
/topic/936874&pg=1&hl= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:03 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
я понимаю что есть отдельная ветка "проектирование БД", но тут вопрос не столько в организации БД, сколько в реализации на Orаcle. По сути, можно обойтись и одной табличкой - "ведомость" и из неё вытащить всё что надо и на когда надо, вопрос в эффективности такого подхода.. Или, все же лучше, пусть и не нормализованной но отдельной таблице, которая учитывает необходимое - склад, дата, материал, на начало, приход, расход, остаток после. тогда, каким образом её заполнять? что бы всегда (при любом обращении) были актальные данные, без пропусков дат и материалов (т.е. без влияния движения на отображение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:13 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2, С этой темой - в "Проектирование БД", да и там лучше не новую тему создавать, а почитать, что уже написано. Вопрос с завидной регулярностью возникает. Например, 936385 , 890969 , 447084 , 613639 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:16 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2я понимаю что есть отдельная ветка "проектирование БД", но тут вопрос не столько в организации БД, сколько в реализации на Orаcle. По сути, можно обойтись и одной табличкой - "ведомость" и из неё вытащить всё что надо и на когда надо, вопрос в эффективности такого подхода.. Или, все же лучше, пусть и не нормализованной но отдельной таблице, которая учитывает необходимое - склад, дата, материал, на начало, приход, расход, остаток после. тогда, каким образом её заполнять? что бы всегда (при любом обращении) были актальные данные, без пропусков дат и материалов (т.е. без влияния движения на отображение). в чем сложность реализации? на дату проведение транзакции смотришь, если есть запись уже на эту дату обновляешь если нету обновляешь date_to на дата транзакции-1 и вставляешь новый с date_to = 31.12.3000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:17 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2 но тут вопрос не столько в организации БД, сколько в реализации на Orаcle.На любой РСУБД реализации будут иметь одни и те же плюсы и минусы. Глобально - хранение истории повышает транзакционную нагрузку, но оптимизирует отчетность. Добавление второй даты в историю еще больше нагружает транзакции, но еще сильнее упрощает отчетность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:18 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Raminна дату проведение транзакции смотришь, если есть запись уже на эту дату обновляешь если нету обновляешь date_to на дата транзакции-1 и вставляешь новый с date_to = 31.12.3000Кстати, дискретность в таблице истории может быть любой - и посекундная и ежемесячная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:21 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andreystells2 но тут вопрос не столько в организации БД, сколько в реализации на Orаcle.На любой РСУБД реализации будут иметь одни и те же плюсы и минусы. Глобально - хранение истории повышает транзакционную нагрузку, но оптимизирует отчетность. Добавление второй даты в историю еще больше нагружает транзакции, но еще сильнее упрощает отчетность. именно, это и называется "Цена Вопроса" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:22 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyRaminна дату проведение транзакции смотришь, если есть запись уже на эту дату обновляешь если нету обновляешь date_to на дата транзакции-1 и вставляешь новый с date_to = 31.12.3000Кстати, дискретность в таблице истории может быть любой - и посекундная и ежемесячная. авторИмея текущее состояние склада мы не имеем его историю, ответ на вопрос «что было со складом хх числа хх года» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:23 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Ramin, спасибо, полистаю. просто сейчас вот подумал, а не добавить ли в "ведомость" поле "остаток на начало".. При формировании ведомости, можно подтягивать остаток. Это даст, имхо, много удобства.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:25 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
RaminBogdanov Andreyпропущено... Кстати, дискретность в таблице истории может быть любой - и посекундная и ежемесячная. авторИмея текущее состояние склада мы не имеем его историю, ответ на вопрос «что было со складом хх числа хх года» Ежемесечная дискретизация в таблице остатков ничуть не мешает получать ответ на указанный вопрос. Просто получение ответа становится чуть более трудоемким (но зато в других местах выигрываем). Raminименно, это и называется "Цена Вопроса"Ну а цена в каждом случае считается индивидуально. Зависит и от общего объема данных и от количества товарных позиций и частоты тех или иных операций. Надо брать и моделировать. Но никакой привязки к конкретно Oracle все это не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:27 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2но тут вопрос не столько в организации БД, сколько в реализации на Orаcle. Физическая модель всегда опирается на логическую. А у Вас пока и логической нет. Сделайте две таблицы: остатки на закрытие дня и остатки на текущий день. Чтобы получить информацию на начало дня, достаточно глянуть, как закрылся прошлый день. Чтобы увидеть движение товара, достаточно информации на начало дня и накладных за день. Подход избитый и банальный. Это лучше обсуждать в Проектировании БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:28 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Raminв чем сложность реализации? на дату проведение транзакции смотришь, если есть запись уже на эту дату обновляешь если нету обновляешь date_to на дата транзакции-1 и вставляешь новый с date_to = 31.12.3000 не очень понял со второй датой.. таблица склад, это просто для удобства.. основное в проводках (накладная + ведомость к ней). У мнея нет опыта в этом плане, и считаю что "хитрый" запрос, формирующий (пусть и в матвьюшку) неоходимые данные весьма тяжелый.. Дело не столько в нагрузке на сервер, там вроде есть ресурсы, сколько реакция приложения на действия пользователя... Или, это в общем то нормально, и можно позволить это? Просто, SELECT * FROM TBL - для рабочей бд мне кажется крайне жестоким и не допустимым, а тут, фактически перебор пойдет каждый раз от начала и до конца... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:34 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
suPPLerФизическая модель всегда опирается на логическую. А у Вас пока и логической нет. Сделайте две таблицы: остатки на закрытие дня и остатки на текущий день. Чтобы получить информацию на начало дня, достаточно глянуть, как закрылся прошлый день. Чтобы увидеть движение товара, достаточно информации на начало дня и накладных за день. Подход избитый и банальный. Это лучше обсуждать в Проектировании БД. да понял что в "проектирование БД" бежать надо.. Смена 8 и 12 часов.. взависимости кто смотрит, кто-то смотрит по утрам и требует остатки на 8 утра (с 8 утра прежних суток). Как такового "закрытия" нет. Производство круглосуточное. Расход, наряду с кладовщиком, списывается и в автоматическом режиме системой (САУ). логика.. гм, а как вы думаете я добрел до чисто практических вопросов? Не было бы логики, эти вопросы и не возникли бы, модель была построена и учитывала всё, как оказалось почти всё.. И даже начала работать, пока не появились "глупые" вопросы, о которых раньше и не подозревали. Этот вопрос только часть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:40 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyRaminпропущено... пропущено... Ежемесечная дискретизация в таблице остатков ничуть не мешает получать ответ на указанный вопрос. Просто получение ответа становится чуть более трудоемким (но зато в других местах выигрываем). Raminименно, это и называется "Цена Вопроса"Ну а цена в каждом случае считается индивидуально. Зависит и от общего объема данных и от количества товарных позиций и частоты тех или иных операций. Надо брать и моделировать. Но никакой привязки к конкретно Oracle все это не имеет. ну я именно и отом что оценивать вопрос зависит от много факторов, нужно взять оптимальный вариант, а что б взять оптимальный вариант нужно иметь хороший опыт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:42 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
ну и.. Oracl налагает ограничения которые надо учитывать - я немогу в тригере сама себя смотреть и/или что-то делать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:43 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
suPPLerstells2но тут вопрос не столько в организации БД, сколько в реализации на Orаcle. Физическая модель всегда опирается на логическую. А у Вас пока и логической нет. Сделайте две таблицы: остатки на закрытие дня и остатки на текущий день. Чтобы получить информацию на начало дня, достаточно глянуть, как закрылся прошлый день. Чтобы увидеть движение товара, достаточно информации на начало дня и накладных за день. Подход избитый и банальный. Это лучше обсуждать в Проектировании БД. напомнил меня старый добрый РС )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:43 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2ну и.. Oracl налагает ограничения которые надо учитывать - я немогу в тригере сама себя смотреть и/или что-то делать.. с таким опытом я думаю вам пора рано писать систему складского учета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:44 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
Raminstells2ну и.. Oracl налагает ограничения которые надо учитывать - я немогу в тригере сама себя смотреть и/или что-то делать.. с таким опытом я думаю вам пора рано писать систему складского учета спасибо за мнение.. "не могу" не значит "не умею".. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:48 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
stells2Смена 8 и 12 часов.. взависимости кто смотрит, кто-то смотрит по утрам и требует остатки на 8 утра (с 8 утра прежних суток). Как такового "закрытия" нет. Анализируйте бизнес-процесс. При окончании смены должны быть сдача-приём остатков, этот документ и можно отразить в таблицу истории остатков. Если на практике такого документа нет, это не означает, что он не был заложен в порядок дня. Скорее, это будет свидетельствовать о том, что на производстве бардак. При автоматизации бардака получится не порядок, а автоматизированный бардак. Так что придётся в тесном сотрудничестве с заказчиком наводить порядок, а потом уже отражать это в Вашей системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:49 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
suPPLerstells2Смена 8 и 12 часов.. взависимости кто смотрит, кто-то смотрит по утрам и требует остатки на 8 утра (с 8 утра прежних суток). Как такового "закрытия" нет. Анализируйте бизнес-процесс. При окончании смены должны быть сдача-приём остатков, этот документ и можно отразить в таблицу истории остатков. Если на практике такого документа нет, это не означает, что он не был заложен в порядок дня. Скорее, это будет свидетельствовать о том, что на производстве бардак. При автоматизации бардака получится не порядок, а автоматизированный бардак. Так что придётся в тесном сотрудничестве с заказчиком наводить порядок, а потом уже отражать это в Вашей системе. поверь это не всегда получается, иногда даже у разработчика бывает 2 варианта: 1) Отказаться от проекта и послать всех нах 2) Согласится и начать копать дермо (ради денег).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:53 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
еще 3 вариант : заказчику лен, и они не хотят работать, но они согласны с тобой но всю работу делаешь ты , включая изменение бизнес правил! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 13:55 |
|
||
|
Состояние склада на произвольную дату
|
|||
|---|---|---|---|
|
#18+
suPPLerАнализируйте бизнес-процесс. При окончании смены должны быть сдача-приём остатков, этот документ и можно отразить в таблицу истории остатков. Если на практике такого документа нет, это не означает, что он не был заложен в порядок дня. Скорее, это будет свидетельствовать о том, что на производстве бардак. При автоматизации бардака получится не порядок, а автоматизированный бардак. Так что придётся в тесном сотрудничестве с заказчиком наводить порядок, а потом уже отражать это в Вашей системе. Ваши слова до бога уши.. Бардак нельзя автоматизировать, верно. Есть кладовщик, работает "в день" но, материалы списываются круглосуточно, и прийти могут в любое время - в зависимости от участка приход/расход оформляет мастер/бригадир. Потом, днем, кладовщик "подбивает бабки".. А утром, с 7 до 8, уже куча желающих посмотреть как прошли сутки/смена (как говорил, у каждого своя - 8, 12 часов)... Насчет бизнес-логики согласен, копья уже поломаны пачками.. В общем, пока у меня работает так: при проведении проводки, я завершаю транзакцию после корректировки склада и "состояния склада" (было пришло ушло осталось). Это даёт удобство в работе и не нагружает систему и тормозит приложения. Но, меня это не устраивает + добавились требования, переписываю по новому, отсюда и вопросы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=40&tid=1541342]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 360ms |

| 0 / 0 |
