powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование бд FIFO, LIFO сертификаты
25 сообщений из 36, страница 1 из 2
Проектирование бд FIFO, LIFO сертификаты
    #33700116
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста как лучше организовать хранение и отпуск товара со склада, имеющего серитфикаты.
Мои рассуждения: В данном случае идёт речь о напитках - пиве :) Оно имеет срок ограниченный срок хранения. Значит надо использовать метод отпуска ФИФО. Где хранить серификаты? Думаю не в справочнике(иначе он рано или поздно разрастётся до огромных размеров, да и нормализация :) ) в таблице приходной накладной для кажного товара.
Скажем приходная накладная: её шапка таблю Prohod, каждый товар накладной PrihodIT.
В подчинённой таблице PrihodIT, к каждому товару писать сертификат(символьное поле) и поле отметки отпущен товар со склада или нет, для скорости поиска(Булево).

При отпуске, буду искать сертификат товара, дата накладной которого минимальна(пришёл первый) и булево поле которого лож(товар ещё неотпущен со склада) и использовать в расходной накладной.

Спасибо.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33700140
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле сертификат, оп моему замыслу, должно находится в подчинённой таблице, а не как на рисунке.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33700409
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил попробовать вот так. Каждой позиции в накладной соответствует запись в таблице сертификатов.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33700456
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Навскидку это должно быть многие-ко-многим
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33700516
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая именно связь? Не вижу смысла.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33704589
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgorichПодскажите пожалуйста как лучше организовать хранение и отпуск товара со склада, имеющего серитфикаты.
Стандартный партионный учет, думаю много раз обсуждался на данном форуме.

По поводу сертификата почему "(символьное поле)"? Как я понимаю слово "сертификат" это бумага с датой номером и кем выдан в котором указана дата реализации? Тогда имеем две даты и две строки.

EgorichКаждой позиции в накладной соответствует запись в таблице сертификатов
А так ли нужно хранить список сертификатов отдельно, т.е. может ли быть несколько партий с одним номером сертификата?

EgorichМои рассуждения: В данном случае идёт речь о напитках - пиве :) Оно имеет срок ограниченный срок хранения. Значит надо использовать метод отпуска ФИФО.
А если срок хранения кончился? ;) отпускать сначала просроченное?
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33705413
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsТогда имеем две даты и две строки.
Спасибо, видимо так и сделаю :)

EstetsА так ли нужно хранить список сертификатов отдельно, т.е. может ли быть несколько партий с одним номером сертификата?
У меня не такие большие закупки, поэтому я подразумеваю, что сертификат будет соответствовать каждому товару. Может включить поля сертификата в подчинённую таблицу PrihodIT?

EstetsА если срок хранения кончился? ;) отпускать сначала просроченное?Поэтому я и буду использовать FIFO :)
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33705791
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgorichУ меня не такие большие закупки, поэтому я подразумеваю, что сертификат будет соответствовать каждому товару. Может включить поля сертификата в подчинённую таблицу PrihodIT?
В данном случае правильная идея.

Единственная проблема что при списании

EgorichРешил попробовать вот так. Каждой позиции в накладной соответствует запись в таблице сертификатов.
Комментарий к картинке. Чем таблица PRIHOD(T) отличается от RASHOD(T)? Может не стоит плодить таблицы практически совпадающие по структуре, а ограничиться полем "тип накладной"?

EgorichПоэтому я и буду использовать FIFO :)
Это я к тому что может быть имеет смысл использовать FIFO по сроку годности и по партиям прихода, а не только по партиям? Правда это вопрос спорный.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33705962
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА так ли нужно хранить список сертификатов отдельно, т.е. может ли быть несколько партий с одним номером сертификата?Однозначно надо хранить список отдельно. Никакой жёсткой привязки к ФИФО ! Иначе высока вероятность, что фактический товар не будет соответствовать выданому по документам. Почему ? Обычные накапливающиеся ошибки выдачи/приёмки/возврата/замены.
Самое правильное в момент отгрузки вручную (!) переписывать сроки отобранного товара и подбирать под эти сроки сертификаты. Геморойно ? Да, но это будет работать железно ! А вот с автоматическим подбором сертификатов будет сплошной кошмар. Через 1-2месяца половина отгруженного товара будет с неверными сертификатами. Не верите ? Тогда сделайте жёсткую привязку и убедитесь сами
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33706263
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА так ли нужно хранить список сертификатов отдельно, т.е. может ли быть несколько партий с одним номером сертификата?
Да, это обычная ситуация.

автор по сроку годности и по партиям прихода, а не только по партиям
Срок годности является одним из атрибутов партии.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33706534
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV авторА так ли нужно хранить список сертификатов отдельно, т.е. может ли быть несколько партий с одним номером сертификата?Однозначно надо хранить список отдельно.
Номер сертификата это такая-же справочная информация как и срок реализации смысл в хранении "списка сроков реализации"?

LSVНикакой жёсткой привязки к ФИФО! Иначе высока вероятность, что фактический товар не будет соответствовать выданому по документам. Почему ? Обычные накапливающиеся ошибки выдачи/приёмки/возврата/замены.
Честно говоря не работал именно с торговлей, но в других областях, где используется LIFO-FIFO метод ручного выбора партии для списани является достаточно редким исключением. Трудно реализуемым и сложно поддерживаемым. Так что я бы не был настолько категоричен.

А вопросы с несоответствием, решаются "человеческим фактором" (строгостью учета) и переодической инвентаризацией склада.

LSVСамое правильное в момент отгрузки вручную (!) переписывать сроки отобранного товара и подбирать под эти сроки сертификаты.
Ни кто не мешает списывать товар со склада в разрезе "приходных партий", а в перечень накладной забивать номера (руками или автоматом) подходящих по срокам сертификатов (если вообще это надо).

2:Egorich Вообще партионный учет достаточно сложная в реализации вещь, особенно если принимать во внимание частичный возврат, потери, инвентаризацию и пр, и используется в бухгалтерии для правильного расчета балансовой стоимости и прибыли/убытков. Так ли это вам надо?
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33707208
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets я уже думал над тем, чтобы приход и расход вести в одной таблице и добавить поле bit логическое - приход, либо расход. Будет легче писать запросы?

У меня понятия партии не будет, поскольку закупки идут небольшие и каждому товару я всегда беру отдельно сертификат.

Подумываю может добавить сертификат прямо в товар PrihodIT?

LSVНикакой жёсткой привязки к ФИФО! Иначе высока вероятность, что фактический товар не будет соответствовать выданому по документам. Почему ? Обычные накапливающиеся ошибки выдачи/приёмки/возврата/замены. В 1С там это, как я понимаю реализовано. Почему это не может быть реализовано у меня :)

Да согласен это сложно. По крайней мере я так думаю сейчас :) Но заказчик просит,а совесть у меня не позволяет его заставить это писать каждый раз сертификат руками :)

Может тогда мне сделать одну таблицу шапки накладной(приходной и расходной), скажем PaymentDoc, и товары накладной PaymentDocIthems? Где поле типа bit в таблице будет признаком прихода, либо расхода. Таблица Sertificat будет связана с каждым товаром PaymentDocIthems.

Неясно мне, как реализовать механизм FiFo. Либо хотя бы предоставлять выбор пользователю сертификатов.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33707272
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsЧестно говоря не работал именно с торговлей...
А вопросы с несоответствием, решаются "человеческим фактором" (строгостью учета) и переодической инвентаризацией склада.Да что Вы говорите ! ! ! Строгостью ? Сразу видно, что не работали в торговле. Ошибки учёта есть всегда и в немалом количестве.
Прикажете делать пересчёт ежедневно ? Глупо.
Единственный выход - в системе возможность привязки сертификатов к товару должна быть гибкой, а не жёстко вшитой.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33707378
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то это не FIFO, а FEFO (Expired или что-то похожее в аббревиатуре).
А это клинически отличается от FIFO. При FIFO необходимо смотреть дату прихода (соответственно, у всей номенклатуры в одном приходе она будет одинаковая), а при FEFO - дату истечения срока конкретной позиции в приходе + учет, что срок хранения зависит от условий хранения и не определяется только номенклатурой как таковой.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708282
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV EstetsА вопросы с несоответствием, решаются "человеческим фактором" (строгостью учета)Да что Вы говорите ! ! ! Строгостью ? Сразу видно, что не работали в торговле. Ошибки учёта есть всегда и в немалом количестве.
Примите на склад нормального человека положите ему оклад в 800$ с условием раз в месяц аудит, есть несоответствие -50% зарплаты, 2 ошибки - увольнение. И знаете, "ошибки" исчезнут сами собой ;)))

Возьмите средний банк около 300 человек оперируют с большими суммами денег, а сколько ошибок? Очень мало. А почему? Компетентность, контроль и ответственность вплодь до уголовной. И это все "человеческий фактор".

LSVЕдинственный выход - в системе возможность привязки сертификатов к товару должна быть гибкой, а не жёстко вшитой.
Желательно иметь такую возможность, но выход не единственный. Пришла одна партия а списали другую??? Правилнее сделать документ, которым при нахождении ошибки, можно было бы изменить текущие партии на складе, а списать все равно FIFO.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708313
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets
Примите на склад нормального человека положите ему оклад в 800$ с условием раз в месяц аудит, есть несоответствие -50% зарплаты, 2 ошибки - увольнение. И знаете, "ошибки" исчезнут сами собой ;))) .

ни-фи-га

сдается мне (извините если ошибся) ни в банке, ни на складе вы не работали. и даже представления о такой работе не имеете...

теоретик... (это не подпись :)) )
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708364
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egorich Estets я уже думал над тем, чтобы приход и расход вести в одной таблице и добавить поле bit логическое - приход, либо расход. Будет легче писать запросы?
Практически на любых базах лучше всего не использовать поле bit. Для таких случаев я напимер использовал int 1, -1.
EgorichНеясно мне, как реализовать механизм FiFo. Либо хотя бы предоставлять выбор пользователю сертификатов.
Мда, но все равно в двух словах:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
таблица движения T_MOV:

OP_TYPE -- тип операции 1-приход -1-расход
OP_QTY -- количество
GOODS_ID -- товар
SERT_NO -- номер сертификата
EXP_DATE -- дата протухания
... всякие там ID, ссылки на накладную и пр

По введенной накладной вносим три записи
OP_TYPEOP_QTYGOODS_IDSERT_NOEXP_DATE110BAL70012301/05/06110BAL70044401/04/06110BAL70077701/05/06

Вносим накладную на продажу 15 бутылок балтики, для этого получаем список текущих партий:

Код: plaintext
1.
2.
3.
4.
5.
SELECT
SUM(OP_QTY*OP_TYPE),SERT_NO,EXP_DATE
FROM T_MOV
WHERE GOODS_ID = 'BAL7'
GROUP BY SERT_NO,EXP_DATE


QTYSERT_NOEXP_DATE100012301/05/06100044401/04/06100077701/05/06

Сортируем его по EXP_DATE, SERT_NO

QTYSERT_NOEXP_DATE100044401/04/06100012301/05/06100077701/05/06

Открываем курсор, или идем клиентом по записям
Напомню, списывается 15 штук.
Начинаем заполнять таблицу T_MOV записями по списанию, первая партия 10 штук, записываем в T_MOV данные из партии и нужное количество

OP_TYPEOP_QTYGOODS_IDSERT_NOEXP_DATE-110BAL70044401/04/06

Вторая партия 10 штук а нам надо списать всего 5

OP_TYPEOP_QTYGOODS_IDSERT_NOEXP_DATE-110BAL70044401/04/06-15BAL70012301/05/06

итого в таблице движения

OP_TYPEOP_QTYGOODS_IDSERT_NOEXP_DATE110BAL70012301/05/06110BAL70044401/04/06110BAL70077701/05/06-110BAL70044401/04/06-15BAL70012301/05/06

Проверяем остаток

Код: plaintext
1.
2.
3.
4.
SELECT
FROM T_MOV
GOODS_ID, SUM(OP_QTY*OP_TYPE),SERT_NO,EXP_DATE
GROUP BY GOODS_ID,SERT_NO,EXP_DATE

получаем

GOODS_IDQTYSERT_NOEXP_DATEBAL750012301/05/06BAL7100077701/05/06

Это конечно сильно упрощенный, но рабочий механизм FIFO, LIFO получается сортировкой таблицы партий в обратную сторону, а "Возможность выбора партий вручную" реализуется как- показать пользователю список партий и пусть он сам нужную сумму по строкам раскидает ;)

Уф.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708365
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendment
теоретик... (это не подпись :)) )
Подпись подпись ;)))
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708369
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets proposed amendment
теоретик... (это не подпись :)) )
Подпись подпись ;)))

:)
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33708643
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egorich
===
Вы уже потратили кучу времени на решение простой задачи. Если действительно нужны структуры (сроки, серификаты), заберите готовые из решения для комбината общепита на iscra.ru (в описании). Там срок годности основной атрибут и это реальные решения. На вопросы всегда ответят с адреса support@iscrasoft.com.
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33714283
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощбь буду пробовать :)
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33714779
Estets...Вносим накладную на продажу 15 бутылок балтики, для этого получаем список текущих партий:
Код: plaintext
1.
2.
3.
4.
5.
SELECT
SUM(OP_QTY*OP_TYPE),SERT_NO,EXP_DATE
FROM T_MOV
WHERE GOODS_ID = 'BAL7'
GROUP BY SERT_NO,EXP_DATE


А что будет, когда в T_MOV накопится десять миллионов записей?

!!! Нельзя короткую операцию (списание одной единицы товара) основывать на запросах, длительность выполнения которых зависит от кол-ва записей в таблицах, которые растут линейно с течением времени !!!
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33715280
xLock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EstetsПрактически на любых базах лучше всего не использовать поле bit. Для таких случаев я напимер использовал int 1, -1.

Если не сложно, уточните почему именно "лучше всего не использовать" ?
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33715762
Egorich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets , как я понимаю, различие будет уже не в одном бите?
...
Рейтинг: 0 / 0
Проектирование бд FIFO, LIFO сертификаты
    #33716827
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xLock EstetsПрактически на любых базах лучше всего не использовать поле bit. Для таких случаев я напимер использовал int 1, -1.

Если не сложно, уточните почему именно "лучше всего не использовать" ?
А смысл? Никакой экономии пространства, все равно сервер будет хранить байт. Не все клиентские приложения понимают битовые поля, либо конвертируют их в int(shortint,tinyint). Зачем лишние расходы?
Плюс выше я описывал, как легко получить сумму приходов/расходов SUM(OP_QTY*OP_TYPE), при битовом поле это решается через CASE.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование бд FIFO, LIFO сертификаты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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