Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Снабжение и склад / 5 сообщений из 5, страница 1 из 1
13.08.2012, 16:11
    #37914743
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снабжение и склад
Вроде, не новичек в БД, но со складом и снабжением ранее не сталкивался. Попробовал построить БД и столкнулся с некоторыми проблемами, решение которых с ходу не нашел.
SQL Server 2005
С одной стороны - есть склады - каждый склад представляет собой векторное пространство адресов. На каждом одресе могут храниться несколько разных или одинаковых деталей. В принципе, сложностей у меня не вызывает. Берем во внимание, что есть таблица со своим ид.
Детали на склад поступают от поставщика(ов) в соответствии с заказами (таблица) + позиции заказов (таблица). Заказ может быть как на различные детали, так и на одинаковые, но с разной датой доставки. Для доставленых деталей таблица Доставок + деталировка доставки. Доставка по позициям заказа может быть как частичной, так и объединенной для одинаковых деталей с разной датой доставки. Вместе с доставкой приходит либо Упаковочный лист либо платежка либо эти два документа вместе. Но одна платежка может придти и сразу на несколько доставок (упаковочных листов ИЗ РАЗНЫХ заказов!). Здесь у меня возникает первае сомнение. Понятно, что номер Упаковочного листа должен быть полем в табл.Доставок. А как быть с Платежкой? Прописать ее здесь же - вроде как отойти от нормализации. Иначе - добавлять еще 2 таблицы - Платежка и ее упаковочные листы. Не то чтобы я экономил на таблицах, но, во-первых, таблиц набирается немало. Во-вторых, не очень вижу как потом управлять этими таблицами: ввел номер платежки, нашел в справочнике поставщика, выбрал заказ 1, выбрал все упаковочные листы к нему, перешел ко второму заказу... Слишком много действий.
Далее, усложнения. Детали иногда приходят некачественные и приходится их отсылать по рекламации: документ на рекламацию (таблица), позиция(ии) по рекламации. Затем, возврат из рекламации - опять 2 таблицы. Детали со склада направляются подрядчику для изготовления полуфабрикатов - еще 2 таблицы. От подрядчика возвращаются остатки + 2 таблы. Подрядчик возвращает на склад полуфабрикат + 2 таблицы. Возможны рекламации полуфабрикатов + 2 табл на возврат + 2 на приход. Движение между складами - передача с одного склада на другой - 1 таблица. Отправка готовой продукции заказчику + 2 тбл... Здесь мой второй вопрос: как справиться с этим движением? Для каждого движения строить свою таблицу складского движения - адрес склада, ид из соответствующей таблицы или как то можно построить одну таблицу двжения по складу с глобальным индитификатором. Что тоже нарушает нормализацию с одной стороны. А с другой усложняет процесс ввода данных: сначала придется заполнять эту таблицу, получать индитификатор и заносить его вместе с данными в соответствующую тбл.
Наверное, сумбурно несколько описал. Готов ответить на любые вопросы.
...
Рейтинг: 0 / 0
13.08.2012, 18:04
    #37914992
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снабжение и склад
1. "Векторное пространство адресов" - несколько необычный термин для складского учета. Имеется в виду физическое расположение внутри склада (номер стеллажа - полки - коробки), или что-то другое?

Вместе с доставкой приходит либо Упаковочный лист либо платежка либо эти два документа вместе. Но одна платежка может придти и сразу на несколько доставок

2. Отделить мух от котлет, то есть заказ товара от его поставки, а поставку товара - от его оплаты. Это разные процессы, разные документы. Связанные, но разные.

Прежде всего, с доставкой "приходит" приходный ордер. И рождается "партия". А к ней уже можно привязывать - по какому заказу (или без заказа) она пришла, какой платежкой оплачена (или еще не оплачена).

3. Далее, по возвратам, и прочим движениям товара. На самом деле документов будет больше, и со временем проявятся новые. Сделаете каждый тип документа в свою таблицу - огребете много таблиц и много проблем. Сделаете в одну - это правильнее, но делать это надо будет внимательно.

В общем, на данном этапе отодвиньте БД, рисуйте документооборот, и выделяйте сущности. Результат в в студию для обсуждения.

И поищите по форуму слова "склад", "партионный учет". Готовые куски обсуждались неоднократно.
...
Рейтинг: 0 / 0
13.08.2012, 18:28
    #37915011
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снабжение и склад
Rivkin DmitryЗдесь у меня возникает первае сомнение. Понятно, что номер Упаковочного листа должен быть полем в табл.Доставок. А как быть с Платежкой?
Формально связь разных документов и их строк состава - многие ко многим.
Например одна строка заказа может быть оплачена несколькими разными платёжками. А может быть наоборот, одной платёжкой оплачено несколько разных строк заказа. Поэтому прямых ссылок быть не должно, так как они работают только при прямой генерации дочерних документов. Точнее, если только прямая генерация дочерниз документов - ими можно обойтись, но в общем случае - нет. Нужны отдельные "связки". Если рассматривается какая-то очень ограниченная ситуация - тогда возможно есть и особенности.
...
Рейтинг: 0 / 0
13.08.2012, 20:19
    #37915120
stwom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снабжение и склад
Rivkin Dmitry,
типа,
ТЗ - сам-себе...
имхо, поэтому - столкнулся с некоторыми проблемами, решение которых с ходу не нашел...
Уважаемый,
а на бид-4 будет продолжение ?
...
...
Рейтинг: 0 / 0
14.08.2012, 09:27
    #37915443
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снабжение и склад
Cane Cat Fisher, Сергей Васкецов
Спасибо за конструктивные замечания. Поизучаю и подумаю. Структуру обязательно выложу попозже
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Снабжение и склад / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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