|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Всем привет. В приложении к посту картинка со схемой БД по учету товаров (приход/продажа/возвраты/инвентаризация). Пока что только связи, типы данных еще не приводил в порядок. Хотелось бы услышать комментарии по поводу структуры. Насколько корректно сделана? Надо ли что-то поправить? Не могу предположить насколько будет понятно ее читать. Так что если есть вопросы, пишите. С удовольствием отвечу и поясню в какой таблице/атрибуте что будет храниться. Делал структуру в MYSQL Workbench. В приложении также рабочий файлик. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 12:49 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Изображение структуры в PNG. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 12:49 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Начни делать приложение, эту БД использующее. Если структура кривая - ты быстро почувствуешь это собственной задницей по геморрою с запросами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 13:04 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Вендоры и Кустомеры должны жить в одной таблице, т.к. суть у них одинаковая. Товарные документы (приходы, возвраты, вн.перемещ., продажи, списания) запросто могут жить в одной таблице, т.к. их суть на самом деле одинакова - движение между пунктами назначения. Нужен журнал движения товаров. Да много чего еще нужно. Желательно немного упростить имена, т.к. их придется часто писать. Очень :). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 13:37 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believe, По партиям учет не хочешь делать? Например, представь, что какой-то товар имеет срок годности, и тебе надо дать отчет, сколько у тебя его на складах свежего, а сколько прокисшего. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 13:39 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believe, Если захочется в одной продаже продать 1 штуку товара по одной цене, и тут же еще 1 штуку этого же товара по другой цене (скажем, уценка, или акция какая), то твои ключи не дадут тебе это сделать. Нехорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 13:51 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believe, Когда ты делаешь возврат от покупателя, ты указываешь связь, от какой продажи этот возврат. А вот когда делается возврат поставщику - вообще не указываешь, от какой это поставки: нате вам разворованный в дороге ящик, сами не знаем, откуда он у нас взялся. А поставщику-то интересно, какого экспедитора штрафовать... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 13:56 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Согласен, осталось выучить какой-нибудь язык программирования. Просто так случилось... Не спрашивайте... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 15:34 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
LSVВендоры и Кустомеры должны жить в одной таблице, т.к. суть у них одинаковая. Товарные документы (приходы, возвраты, вн.перемещ., продажи, списания) запросто могут жить в одной таблице, т.к. их суть на самом деле одинакова - движение между пунктами назначения. Нужен журнал движения товаров. Да много чего еще нужно. Желательно немного упростить имена, т.к. их придется часто писать. Очень :). Вендоры и Кастомеры, Имена - практически согласен. На счет товарных документов: Немного не понимаю что вы имеете ввиду. У прихода, как сущности, есть свои атрибуты, у возвратов свои и т.д.... Место нахождения товара определяется связью таблиц Products =>> Warehouses_Products =>> Warehouses. Движение товаров вытаскивается запросами из соответствующих таблиц: Код: sql 1. 2. 3.
Для чего журнал движения товаров? Не будет ли это дублированием информации? Много чего нужно? Можно хотя бы тезисно с кратким пояснением, если не затруднит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 15:50 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
//У прихода, как сущности, есть свои атрибуты, у возвратов свои и т.д Их сущности на самом деле очень подобны. Склады тоже следует вести в справочнике контрагентов (с соотв. признаком) Для чего журнал движения товаров? Не будет ли это дублированием информации?Там будет подготовленная информация "всё-в-одном": когда, кто, откуда, куда, сколько и т.д. Ед.Изм. приведена к базовой (в первичке может быть любой). Приход с "+", расход с "-". Это не избыточность. Все отчетность по движению будет браться с одной таблицы элементарными запросами. И предельно быстро. Партионный учет хорошо ложится на эту таблицу. Скл.Учет - банальное перемещение ТМЦ между точками(склад, контрагент, POS) Даже финансы можно вести подобным образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 16:06 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Cane Cat Fishermake.believe, По партиям учет не хочешь делать? Например, представь, что какой-то товар имеет срок годности, и тебе надо дать отчет, сколько у тебя его на складах свежего, а сколько прокисшего. Разбивать товар по партиям в данной ситуации нет необходимости. Однако, такая мысль тоже приходила в голову. Товары непродовольственные. Cane Cat Fishermake.believe, Если захочется в одной продаже продать 1 штуку товара по одной цене, и тут же еще 1 штуку этого же товара по другой цене (скажем, уценка, или акция какая), то твои ключи не дадут тебе это сделать. Нехорошо. А разве добавление еще одной строки в табл.Sales_Products с указанием другой цены на тот же самый ProductID не решает эту задачу? Потом в табл.Sales в поле SaleNote делается текстовая заметка, раскрывающая суть продажи. Cane Cat Fishermake.believe, Когда ты делаешь возврат от покупателя, ты указываешь связь, от какой продажи этот возврат. А вот когда делается возврат поставщику - вообще не указываешь, от какой это поставки: нате вам разворованный в дороге ящик, сами не знаем, откуда он у нас взялся. А поставщику-то интересно, какого экспедитора штрафовать... Партии (если точнее, дата поставки конкретного товара) не отслеживаются, т.к. нет необходимости. В данном, конкретном случае, важно только то, от кого именно пришел товар - Вендор. Если товар одинаковый от разных вендоров, то планировалось учитывать их под разными ProductID. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 16:13 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Если товар одинаковый от разных вендоров, то планировалось учитывать их под разными ProductID. Очень опасная ошибка. Размножение одинаковых карточек - огромная беда всех баз. И с ней надо постоянно бороться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 16:27 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believeCane Cat Fishermake.believe, Если захочется в одной продаже продать 1 штуку товара по одной цене, и тут же еще 1 штуку этого же товара по другой цене (скажем, уценка, или акция какая), то твои ключи не дадут тебе это сделать. Нехорошо. А разве добавление еще одной строки в табл.Sales_Products с указанием другой цены на тот же самый ProductID не решает эту задачу? Потом в табл.Sales в поле SaleNote делается текстовая заметка, раскрывающая суть продажи. Судя по схеме, в таблице Sales_Products первичный ключ - SalesID + ProductID. То есть в рамках одной продажи SalesID может быть только один продукт ProductID. Еще одну строку с тем же ProductID оно не даст добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 16:56 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Cane Cat Fishermake.believeпропущено... А разве добавление еще одной строки в табл.Sales_Products с указанием другой цены на тот же самый ProductID не решает эту задачу? Потом в табл.Sales в поле SaleNote делается текстовая заметка, раскрывающая суть продажи. Судя по схеме, в таблице Sales_Products первичный ключ - SalesID + ProductID. То есть в рамках одной продажи SalesID может быть только один продукт ProductID. Еще одну строку с тем же ProductID оно не даст добавить. Понял. Вы правы. Какой вариант можете предложить, чтобы избежать этой проблемы? В принципе, чисто с практической точки зрения, решается созданием еще одной продажи. Но... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 17:14 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
LSV//У прихода, как сущности, есть свои атрибуты, у возвратов свои и т.д Их сущности на самом деле очень подобны. Склады тоже следует вести в справочнике контрагентов (с соотв. признаком) Для чего журнал движения товаров? Не будет ли это дублированием информации?Там будет подготовленная информация "всё-в-одном": когда, кто, откуда, куда, сколько и т.д. Ед.Изм. приведена к базовой (в первичке может быть любой). Приход с "+", расход с "-". Это не избыточность. Все отчетность по движению будет браться с одной таблицы элементарными запросами. И предельно быстро. Партионный учет хорошо ложится на эту таблицу. Скл.Учет - банальное перемещение ТМЦ между точками(склад, контрагент, POS) Даже финансы можно вести подобным образом. Идею понял. Мне это напоминает лист EXCEL'я - все в одном месте, где просто пользуешься фильтрами. Согласен, удобно. Даже больше скажу: намного привычнее для меня. А вы можете привести пример БД исполненной по такой схеме? Это бы очень помогло. LSVЕсли товар одинаковый от разных вендоров, то планировалось учитывать их под разными ProductID. Очень опасная ошибка. Размножение одинаковых карточек - огромная беда всех баз. И с ней надо постоянно бороться. Ммм... товары - электроника. Дело в том, что отдельная единица товара, например по серийному номеру, не планировалась учитываться. Кажется, конкретно эта проблема решается созданием реестра серийных номеров. Если знать, от какого поставщика какой серийный номер поступил, то дублирование ProductID становится ненужным, так как вопрос уникальности - серийный номер с привязкой к поставщику. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 17:33 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believeCane Cat Fisherпропущено... Судя по схеме, в таблице Sales_Products первичный ключ - SalesID + ProductID. То есть в рамках одной продажи SalesID может быть только один продукт ProductID. Еще одну строку с тем же ProductID оно не даст добавить. Понял. Вы правы. Какой вариант можете предложить, чтобы избежать этой проблемы? добавить суррогатный ключ Sales_Products_ID int primary key. А SalesID + ProductID из primary key выкинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 17:40 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believe, А как вообще планируется вести денежный учет этого дела? В этой структуре не получится оценить остатки на складе в деньгах, ни по ценам поставки, ни по ценам продаж. По ценам поставки не получится, потому что товары на складе в Warehouses_Products не знают, по какой поставке и по какой цене они поступили. А по ценам продажи не получится, потому что эти цены возникают только при продаже в Sales_Products.SalePrice, а товары на складе еще не проданы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 18:45 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Cane Cat Fishermake.believe, А как вообще планируется вести денежный учет этого дела? В этой структуре не получится оценить остатки на складе в деньгах, ни по ценам поставки, ни по ценам продаж. По ценам поставки не получится, потому что товары на складе в Warehouses_Products не знают, по какой поставке и по какой цене они поступили. А по ценам продажи не получится, потому что эти цены возникают только при продаже в Sales_Products.SalePrice, а товары на складе еще не проданы. Метод расчета себестоимости, принимаемый во внимание в данной структуре - средневзвешенный. Т.е. расчет будет производиться в момент запроса данных. Именно для себестоимости думал использовать промежуточную таблицу итогов, но что-то так и не придумал ничего. автор Пример расчета по методу средней себестоимости На начало месяца в магазине «Канцтовары» оставалось 370 шариковых ручек по закупочной цене 10 рублей. В течение месяца было поставлено еще 1000 ручек двумя партиями — 500 по 9 рублей 50 копеек и 500 по 9 рублей. Считаем среднюю стоимость. Стоимость ТМЦ на начало месяца: 370 X 10 = 3700 (руб.) Стоимость 1-й новой поставки ТМЦ: 500 X 9.5 = 4750 (руб.) Стоимость 2-й новой поставки ТМЦ: 500 X 9 = 4500 (руб.) Средняя стоимость ТМЦ: (3700 + 4750 + 4500) : (370 + 1000) = 9.45 (руб.) По этой средней стоимости и будут считаться списанные товары и высчитываться прибыль. Например, если ручки продаются по 15 рублей, и за месяц было продано 1100 ручек, прибыль конкретно за эти ручки будет считаться так: 1100 X 15 – 1100 X 9.45 = 6105 (руб.) Преимущества метода расчета по средней себестоимости — в стабильности цены продаваемых материалов и простоте. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 19:33 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believeМетод расчета себестоимости, принимаемый во внимание в данной структуре - средневзвешенный. Т.е. расчет будет производиться в момент запроса данных. Не думаю, что это будет удобно. Гладко на бумаге, считать все в конце месяца. Впрочем, дело хозяйское. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 20:02 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
авторНа начало месяца в магазине «Канцтовары» оставалось 370 шариковых ручек по закупочной цене 10 рублей. Вот этого-то из существующей структуры мы и не знаем - по какой закупочной цене у нас сейчас лежат ручки. Можно, конечно, каждый раз раскручивать этот вопрос по каждому товару от сотворения мира, и это будет интересно для небольшой учебной системы, но вряд ли это хорошая мысль для реальной жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2018, 20:07 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
Пример расчета по методу средней себестоимостиСтрёмно. Завтра появится новый начальник и и всё заверте... по новой. Тем более разные товары могут потребовать разный метод расчета. Партионный учет наиболее универсален, хотя трудоемок в качественной реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:29 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
"Средняя цена" очень трудоемкая и неудобная штука. Партионный учет - реальный выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:37 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
make.believeИзображение структуры в PNG. ProductStatuses_Product подозрительно живет своей жизнью независимо от поставок и продаж. Какие статусы там предполагаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:28 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
SergueiProductStatuses_Product подозрительно живет своей жизнью независимо от поставок и продаж. Какие статусы там предполагаются? Я так понимаю Warehoses_products -попытка сделать движения товаров между складами? Если да то - то подумайте получше что там не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:48 |
|
Структура БД учета товаров (приход/продажа/возвраты/инвентаризация)
|
|||
---|---|---|---|
#18+
если таки продажи и учёт товаров - то партионный учет + сортамент ибо заводить 100500 карточек на один и тот-же товар , но в разной комплектации, - тебя застрелят товароведы )) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 16:28 |
|
|
start [/forum/topic.php?fid=32&msg=39594232&tid=1540084]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 242ms |
total: | 533ms |
0 / 0 |