Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте структуру базы склада.. / 25 сообщений из 30, страница 1 из 2
03.08.2005, 16:08
    #33199677
p1024
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Один из видов деятельности фирмы, где я работаю - продажа интернет-карточек.
То есть карточки берутся у неких поставщиков, хранятся на складе, а потом продаются. Причем продается только юридическим лицам. Просто зайти с улицы и купить карточку у нас нельзя.
Карточки продаются без определенного порядка - нужно 100 таких и 50 вот таких - просто достают коробки, что ближе лежат.
И вот сегодня девочка, к-я занимается всем этим делом, попросила написать программку для учета таких карточек - приход, расход, текущее состояние на складе. В принципе, все.
Мое предложение использовать 1С было отвергнуто.
Вот теперь сижу и придумываю структуру базы.
Пока что придумал вот что:
1)
Storageobject_idobject_nameobject_units_idobject_countobject_sale_price
хранит остатки на складе - наименование объекта хранения, ед. измерения (ссылка на таблицу-справочник), количество (может быть "0"), цена, назначенная директором для продажи.
2)
Unitsunit_short_nameunit_full_nameunit_description
это справочник единиц измерений
3)
Ordersorder_idorder_object_idorder_countorder_dateorder_invoice_numberorder_company_id
это приход товара - наименование товара (ссылка на таблицу Strorage), количество товара, дата, номер накладной, компания-поставщик (ссылка на соотв. таблицу)
3)
Salessale_idsale_object_idsale_countsale_datesale_invoice_numbersale_company
это расход. структура таблицы аналогична 2). (кстати, может, следует объединить таблицы 2-3?)
4)
Companycompany_idcompany_name....
таблица компаний (как поставщиков, так и клиентов) - ее детальная структура на данный момент не интересна.

Допустим, закупили 1000 карточек на 10 часов доступа в интернет. Тогда я представляю себе работу программы так:
1) обновляется таблица Storage - если такой объект уже существует, то изменяем поле object_count на купленное количество, иначе - добавляем новую запись;
2) добавляем запись в таблицу Orders;
Теперь продаем:
1) обновляем таблицу Storage - вычитаем продаваемое количество из object_count (в итоге может получиться 0);
2) добавляем запись в таблицу Sales.

Подскажите, пожалуйста, насколько такая структура жизнеспособна, чего не хватает, что лишнее?
...
Рейтинг: 0 / 0
03.08.2005, 16:11
    #33199693
Old Nick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
С удовольствием!

Фигня это полная, вот!

--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
03.08.2005, 16:19
    #33199735
p1024
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Не могли бы Вы дать чуток более развернутый ответ? Желательно, с аргументами. Что не так?
...
Рейтинг: 0 / 0
03.08.2005, 16:34
    #33199778
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
ИМХО.
Если это маленькая локальная програмулька для указанных неизменных условий, то с пивком потянет. Но только для количественного учета.
Приход-расход объединить ессно. Цена в Storage - лишнее.
...
Рейтинг: 0 / 0
03.08.2005, 16:42
    #33199811
Old Nick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Шуткую я так :-)

А вообще правила проектирования склада примерно такие:

Это регистрация перемещения объекта учета от одного субъекта к другому на основании документа в определенном количестве:

Таблица регистрации движения:
1. Товар
2. Документ
3. Ед. изм. (только для конвертации на клиенте)
4. Количество в минимальной единице

Таблица документов:
1. Дата
2. Субъект1 (от кого)
3. Субъект2 (кому)
остальное опционально

Таблицы субъектов, объектов, ед. изм. по желанию. Можно в виде одной таблицы с типизацией записи.


--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
03.08.2005, 16:47
    #33199831
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
2Old Nick
Фигня полная Контрагентов в документе может быть и больше 2. Надо кросс-таблицу держать.
2p1024
Велосипед изобретаем, господин студент? Советую пойти поработать в какую-нибудь приличную складописательскую контору. Там за годик-другой всему научитесь.
...
Рейтинг: 0 / 0
03.08.2005, 16:49
    #33199843
Old Nick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
В таком случае субъектов хранить в таблице регистрации движения

Хотя, если честно, ни разу не сталкивался с числом субъектов в одном документе более двух.

--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
03.08.2005, 16:51
    #33199853
Paul Sacks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
p1024Подскажите, пожалуйста, насколько такая структура жизнеспособна, чего не хватает, что лишнее?
На первый взляд все нормально. Далее жизнь покажет.
...
Рейтинг: 0 / 0
03.08.2005, 22:41
    #33200507
p1024
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Old Nick
Благодарю за ответ. Постараюсь поправить свою схему.


СерегаЦена в Storage - лишнее.
Почему? У нас есть цены, утвержденные директором. Я хотел автоматически вставлять эту цену при выписке расходной накладной. Естественно, оставляя возможность изменить этот параметр в каждом конкретном случае - ведь цена может быть установлена одна, а в итоге продадут совсем по другой. (что, собственно, я и наблюдаю)

Cripp1024
Велосипед изобретаем, господин студент? Советую пойти поработать в какую-нибудь приличную складописательскую контору. Там за годик-другой всему научитесь.
То есть, по-Вашему, если человек изобретает велосипед - это обязательно студент? Когда заканчиваешь ВУЗ, то приходит ВЕЛИКОЕ ОЗАРЕНИЕ? Все задачки решаются в уме? Если у Вас так и было, рад за Вас безмерно.
У меня, к сожалению, все гораздо приземленнее. Надо лишь работать и работать - только тогда получается. Что я, собственно, и стараюсь делать. И на форуме спрашиваю чтобы НАУЧИТЬСЯ, а не получить щелчок по носу.
..
Может, тогда подкинете готовое решение? Тогда не буду изобретать велосипед. :)
...
Рейтинг: 0 / 0
04.08.2005, 09:01
    #33200745
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
p1024Почему? У нас есть цены, утвержденные директором. Я хотел автоматически вставлять эту цену при выписке расходной накладной.
Да пожалста. Только цена то меняется. И ты никогда не будешь знать ни по какой цене купил, ни по какой продал. Ты знаешь только цену на сегодня.
...
Рейтинг: 0 / 0
04.08.2005, 11:56
    #33201249
!!!
!!!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
p1024Может, тогда подкинете готовое решение? Тогда не буду изобретать велосипед. :)А уже подкинули
CripСоветую пойти поработать в какую-нибудь приличную складописательскую контору. Там за годик-другой всему научитесь.
...
Рейтинг: 0 / 0
04.08.2005, 12:41
    #33201433
p1024
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
СерегаДа пожалста. Только цена то меняется. И ты никогда не будешь знать ни по какой цене купил, ни по какой продал. Ты знаешь только цену на сегодня.
Не понимаю. Я же храню цену продажи/покупки в "таблицах регистрации движения" ((с) Old Nick )? Поэтому я всегда могу сказать, по какой цене купил, а по какой продал.
А цена в Storage - отдельный параметр. Это лишь предписание директора.
...
Рейтинг: 0 / 0
04.08.2005, 13:38
    #33201591
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
p1024Не понимаю. Я же храню цену продажи/покупки в "таблицах регистрации движения" ((с) Old Nick )? Поэтому я всегда могу сказать, по какой цене купил, а по какой продал.
Я что-то этого не увидел в структуре. Может смотрел невнимательно?
Ну раз есть, значит есть. Тогда согласен.
...
Рейтинг: 0 / 0
04.08.2005, 14:25
    #33201768
Old Nick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
В любом случае удобно создать еще и таблицу Прайс-Лист

1. Дата
2. Товар
3. Цена

и из нее брать цену по-умолчанию для подстановки в документ с возможностью изменить ее в документе.
...
Рейтинг: 0 / 0
04.08.2005, 16:05
    #33202120
p1024
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Old Nick
Хм.. Вы правы. Спасибо.
...
Рейтинг: 0 / 0
04.08.2005, 17:07
    #33202313
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
2Old Nick
Например любой трехсторонний договор. Помнится что-то подобное было с договором консигнации.
Еще пример, немного вырожденный, это операция которая делает движение сразу по нескольким контрагентам. Допустим продажа товара покупателю с нескольких складов одновременно. Иногда заказчик такое может потребовать. Правда это уже изврат ИМХО.

2p1024
Не хотелось бы вас расстраивать. Но мне почему-то кажется обратись ваш заказчик допустим к какому-нибудь 1С франчайзингу он был бы удовлетворен куда больше.
...
Рейтинг: 0 / 0
17.03.2006, 16:37
    #33608690
12434
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
По моему крайне ущербная структура…

И потом не надо путать товар и товарные позиции даже если они совпадают….

Напишу только основные отличия.
Товар:
Имеет закупочную цены в любой валюте, и закупочную в гос знаках (или уе)
Имеет ГТД, серийки и т. д.
Физически существует и имеет вес размер и т. д. и адрес c номером полки где лежит :)
Не содержится в прайс листах
Назначение – складской учёт в единицах измерения
Должно быть понятие киты и т. п. собираться и разбираться непосредственно на складе…


Товарная позиция:
Имеет продажную цены и всякие акции там акции на скидки в гос знаках (или уе) но это только предпологаемые продажные цены… реальные будут в счёте…
Содержится в прайс листе и бух документах…
Не имеет веса и физ. характеристик…
Содержится в прайс листах
Может включать в себя произвольное количество товара (если не включает то это работы-услуги или фикция т.е. взаимно зачёты )) ) это и для банглов нужно комплексов …
Назначение – бух отчётность в штуках


Если в даваться в складской учет то тут посложнее будет… связано это с учетом товара на нескольких складах нескольких филиальных фирм с несколькими состояниями товара… а также избирательная внутренняя регистрация товара (ведение карточки товара) и проводка его при движении по складу или смена статуса (на статус влияет товарная позиция)

В движении товара нельзя хранить цены любые! Это очевидно!

Всё что я написал идёт в разрез с этой структурой :( а мы не коснулись механизмов заявок, оплаты а это очень интересные темы…
...
Рейтинг: 0 / 0
18.03.2006, 12:41
    #33609674
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Приход-расход обязательно нужно объединить в таблицу Движение. И обязательно хранить фактическую продажную и входную цену в ней.
12434. Почему это Вам очевидно, что нельзя хранить цены в Движении? Как раз наоборот.

1. Цены со временем меняются и тогда, если их не хранить в Движении, нужно делать таблицу истории изменения цен.
2. Если в организации есть система скидок и продажная цена не хранится в Движении, то нужно хранить в ней значения скидок. Причем скидки бывают процентные и абсолютные. Это еще два поля в таблице.
Итак, если мы не храним цену в Движении, то мы имеем дополнительную таблицу и одно дополнительное поле, по сравнению с вариантом хранения продажной цены в таблице.
========
Склады бывают разные. Не надо пугать человека всякими стелажными местами, многовалютным учетом и выдачей с разных складах. Еще бывают и сроки реализации, и пересортица, и многое другое усложняющее базу.

В данном случае склад очень простой и структура вполне работоспособна с учетом замечания о слиянии Прихода и Расхода. Кстати, есть два подхода, как различать в ней приход и расход. Или делать поле-признак, или хранить количество прихода со знаком плюс, а расхода - со знаком минус. Лично я предпочитаю второй вариант. Тогда остаток получается простым суммированием по полю.
...
Рейтинг: 0 / 0
19.03.2006, 14:42
    #33610351
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Cat2 wrote:
> как различать в ней приход и расход. Или делать поле-признак, или
> хранить количество прихода со знаком плюс, а расхода - со знаком минус.
> Лично я предпочитаю второй вариант. Тогда остаток получается простым
> суммированием по полю.
а как Вы различаете сторнирование?

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.03.2006, 07:24
    #33610889
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Зачем на складе сторно?

Это же склад, а не бухгалтерия.
В общем случае всякие реализационные и нереализационные операции движения различаются по типу документа.
...
Рейтинг: 0 / 0
20.03.2006, 11:43
    #33611398
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
locky
> Или делать поле-признак, или
> хранить количество прихода со знаком плюс, а расхода - со знаком минус.
> Лично я предпочитаю второй вариант. Тогда остаток получается простым
> суммированием по полю.
а как Вы различаете сторнирование?

Как вариант признак приход-расход делать 1 и -1 тогда, остаются одни плюсы, можно определить приход это или расход, выделить сторнирующие проводки и посчитать не намного сложнее SUM(oper_sum * deb_or_cred).

А на счет того что, "Это же склад, а не бухгалтерия". В первых механизм достаточно универсальный, что бы переписывать его от одной задачи не имеющий сторно к другой ее имеющей. Во вторых лучше перезаложить некую избыточную информацию (не влияющую на объем и скорость обработки), даже если в результате это использоваться не будет, особенно в базовых таблицах.
...
Рейтинг: 0 / 0
08.06.2006, 21:28
    #33781965
funkster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
А как учесть то, что при продаже сначла продают купленный ранее товар (один тип изделия), а потом купленный позже ?
...
Рейтинг: 0 / 0
09.06.2006, 07:55
    #33782246
smeh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
просто нет словыва
...
Рейтинг: 0 / 0
09.06.2006, 08:46
    #33782290
smeh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Сотрите кто нить предыдущее сообщение, случайно оно.

Вообще это очень похоже на задачу №1 в тестах по 1С
Я делал так (без учета Единиц измерения товара, думаю не составит труда их сюда добавить. ПОка предположим что всё в 'штуках').
Справочники
Склад ид наименование прочие поля описывающие Склад

Товар ид наименование прочие поля описывающие Товар

Контрагент ид наименование прочие поля описывающие Контрагентов

Статус - описывает характер движения (приход расход переброска и т.д.) ид наименование прочие поля описывающие Контрагентов

Прайс ид наименование товар - ключ на Товар контрагент - ключ на Контрагент цена дата прочие поля описывающие Прайс

Документы

Приходная накладная ШАПКА ид - сквозной с расходной накладной дата контрагент - ключ на Контрагент прочие поля необходимы в шапке ТАБЛИЧНАЯ ЧАСТЬ (далее ТЧ) ид документ - ключ на шапку товар - ключь на Товар кол-во цена склад - ключ на Склад прочие поля необходимые для ТЧ


Расходная накладная ШАПКА ид - сквозной с приходной накладной дата контрагент - ключ на Контрагент прочие поля необходимы в шапке ТАБЛИЧНАЯ ЧАСТЬ (далее ТЧ) ид документ - ключ на шапку товар - ключь на Товар кол-во - предусмотреть проверку на остаток на складе цена - можно предусмотреть заполнение из прайса склад - ключ на Склад прочие поля необходимые для ТЧ

Нужен еще документ Переброска товара - для отражения перемещения между складами. Ну он совсем простой, описывать не буду.

Регистр
Движения товара склад - ключ на Склад кол-во цена приход-расход - '+' -приход '-' -расход дата - дата движения статус - ключ на Статус документ - ключь на Документы (для этого у них сквозной ИД) прочие поля описывающие конкретное движение

Порядок работы документов:
Приходная накладная - делает 1 запись на каждую строку ТЧ в регистре с '+' и статусом "Приход".
Расходная накладная - делает 1 запись на каждую строку ТЧ в регистре с '-' и статусом "Расход".
Переброска - делает 2 записи на каждую строку в ТЧ, одна с "+", другая с "-", статус в обеих записях "Переброска".

Остаток на складе =
select
товар
,колво = sum(case приход-расход when '+' then кол-во else -кол-во end)
,сумма = sum(case приход-расход when '+' then цена else -цена end)
from Движения товара
where
склад = НУЖНЫЙ НАМ СКЛАД
and дата <= НУЖНАЯ НАМ ДАТА
group by
товар

вот и все.
...
Рейтинг: 0 / 0
09.06.2006, 08:51
    #33782297
smeh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте структуру базы склада..
Упс!
В Справочнике Статусы не надо поле "прочие поля описывающие контрагентов".
Виноват, проглядел.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте структуру базы склада.. / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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