powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проект БД изделий
25 сообщений из 68, страница 1 из 3
Проект БД изделий
    #32968806
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задачка:

Нужно вести БД изделий, которые могут состоять из заготовок (материаллов) и/или из других изделий, которые тоже могут состоять из заготовок (материаллов) и/или из других изделий и так далее.
Разница между изделиями верхнего уровня и всех остальных только то, что они продаются заказчикам, а остальные - комплектующие.

Как правильно организовать базу?

Я придумал вот так:

TABLE ware // готовые изделия
ware_id
drawing_number
description
....

TABLE workpieces // заготовки
ware_id
material_id
quantity
...

TABLE component_parts // комплектующие изделия
ware_id
component_id
quantity
...

Так как опыта у меня совсем мало, оцените, пожалуйста, и скажите есть ли более совершенные решения с точки зрения простоты/сложности запросов и будущего усовершенствования?
Потому-что боюсь зайти слишком далеко з заведомо плохим началом :)
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968853
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C точки зрения универсальной структуры данных я бы делал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
-- заготовки
create table WorkPieces (WorkPieceId integer not null primary key, ...);

-- изделия
create table Components (ComponentId integer not null primary key, ...);

-- составные части
create table ComponentParts (
  ComponentId integer not null references Components (ComponentId),
  SubComponentId integer references Component (ComponentId),
  WorkPieceId integer references WorkPieces (WorkPieceId),
  Quantity integer ....
  unique ( ComponentId, SubComponentId, WorkPieceId ),
  check ( SubComponentId is null and WorkPieceId is not null or
             SubComponentId is not null and WorkPieceId is null )
);

-- выходной продукт
create table Ware (
  WareId integer not null primary key,
  ComponentId integer not null references Components (ComponentId),
  ...
);

Ну а оптимальность запросов - вопрос, который существенно зависит от требуемых запросов.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968863
zass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любую БД начинают проектировать с справочников - основная информация, которая будет находиться правктически во всех таблицах. В Вашем случае - материалы. т.о. необходимо создать справочкик или справочники материалов. А вот потом только пойдут таблицы изделий.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968902
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KozlovРазница между изделиями верхнего уровня и всех остальных только то, что они продаются заказчикам, а остальные - комплектующие. Между ними нет никакой разницы. В терминологии бухучета они различаются как полуфабрикаты и готовые изделия. На этом вся разница закончилась. Для них одинаковый учет, отдельные сборочные единицы могут входить с более крупные. Одинаковая методика расчета их себестоимости. Полуфабрикаты также могут быть реализованы со всеми вытекающими последствиями – необходимость списания их себестоимости на финансовые результаты. Следовательно, не должно быть разных таблиц для полуфабрикатов и готовых изделий. Это одна таблица.

Для описания комплектации требуется отдельный механизм. Он может быть разным. Я, например, использую что то на подобие «component_parts». Такой подход полностью устраивает. Видел древовидный справочник изделий, но при большой номенклатуре это не удобно.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968917
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVP
Для описания комплектации требуется отдельный механизм. Он может быть разным. Я, например, использую что то на подобие «component_parts». Такой подход полностью устраивает.

А можно по-подробнее о таком подходе?
Може он и меня устроит? :)
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968935
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPМежду ними нет никакой разницы. В терминологии бухучета они различаются как полуфабрикаты и готовые изделия. На этом вся разница закончилась.
Зависит от задач. С точки зрения учета разницы действительно нет - но кто сказал Вам, что задача включает в себя только учет? С точки зрения продажи это две разные сущности - одна ключевая для процесса, другая не участвующая в процессе. Можно, конечно, ввести флаг "разрешен к продаже", отстроить ограничения целостности, мешающие назначить цену продажи непродаваемому товару.. Но я бы сказал, правильнее именно что две сущности.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968945
zass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP Igor KozlovРазница между изделиями верхнего уровня и всех остальных только то, что они продаются заказчикам, а остальные - комплектующие.

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

Вот как раз древовидный справочник изделий (товаров) и используется в классификаторе товаров, и состоит он минимум из 6 простых справочников
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968963
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА в чем разница? Любой полуфабрикат может быть продан - на запчасти или как промежуточный продукт производства. Далее, любой полуфабрикат при использовании его на следующих технологических переходах, имеет такое же значение как и покупные материалы (сырье). Необходимо анализировать его запасы, определить необходимое количество изготовления исходя из производственной программы, он точно так же списывается на производство или для реализации как и покупные материалы. С другой стороны, уже готовая продукция для других производственных участков может быть исопльзована как сырье и материалы.
В чем разница, если можно, конкретнее?
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968967
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zassВот как раз древовидный справочник изделий (товаров) и используется в классификаторе товаров, и состоит он минимум из 6 простых справочниковЗачем 6 таблиц? Все можно уместить в одной таблице, содержащей поля описания дерева и поля параметров изделий.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968983
zass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP softwarerА в чем разница? Любой полуфабрикат может быть продан - на запчасти или как промежуточный продукт производства. Далее, любой полуфабрикат при использовании его на следующих технологических переходах, имеет такое же значение как и покупные материалы (сырье). Необходимо анализировать его запасы, определить необходимое количество изготовления исходя из производственной программы, он точно так же списывается на производство или для реализации как и покупные материалы. С другой стороны, уже готовая продукция для других производственных участков может быть исопльзована как сырье и материалы.
В чем разница, если можно, конкретнее?

Для этих целей необходимо создать склад в складе (мы его назвали кладовкой). По данной вашей теме существует целая технология производства, которая включает в себя АРМ Технолога, АРМ Калькулятора, АРМ Склад, АРМ Кладовка. В Интернете где-то видел доку на 70 страниц. А у меня работает таким образом хлебное и колбасное производство
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968989
zass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP zassВот как раз древовидный справочник изделий (товаров) и используется в классификаторе товаров, и состоит он минимум из 6 простых справочниковЗачем 6 таблиц? Все можно уместить в одной таблице, содержащей поля описания дерева и поля параметров изделий.

Все очень просто. Существуют группы товаров, подгруппы товаров, виды товаров, разновидность 1, разновидность 2 и разновидность 3. По данной технологии работаю таможни, например.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32968992
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чесно говоря, мне ближе решение с одной таблицей и флажком
готовое изделие/комплектующее изделие

Но как организовать древовидную структуру?
Можно подробнее, PVP?

А ещё лучше с примерчиком.

Большое спасибо!
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969006
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zassДля этих целей необходимо создать склад в складе (мы его назвали кладовкой). По данной вашей теме существует целая технология производства, которая включает в себя АРМ Технолога, АРМ Калькулятора, АРМ Склад, АРМ Кладовка. В Интернете где-то видел доку на 70 страниц. А у меня работает таким образом хлебное и колбасное производство

Zass, ссылочку не подкинете?
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969022
zass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, не помню. Но в яндексе рекомендую поискать. Мы в свое время строили таким образом технологические процессы пищевых производств.
Желаю удачи.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969023
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPА в чем разница?
В бизнесе.

PVPЛюбой полуфабрикат может быть продан
"Имеет теоретическую возможность быть проданным" - да. А вот практическую - зависит от. Скажем, я несколько сомневаюсь в том, что Вы сможете подъехать в издательство и легко и просто (официально) купить обложку к книге. Если Вы не будете готовы потратить неадекватную сумму - Вам просто скажут "мы таким не занимаемся".

Теперь давайте смотреть, в чем разница. С одной стороны, если таки хочется продать обложку - нажимаем в списке полуфабрикатов "сделать товаром", вводим необходимые для продажи данные - ту же продажную цену - и готово. С другой стороны, держа их вместе - придется либо в куче мест пихать дополнительные проверки, либо время от времени решать возникшие коллизии, когда кто-то ошибся и выписал клиенту непродаваемый полуфабрикат.

Поэтому обратите внимание на мою схему. Собственно основная, центральная таблица в ней - полуфабрикаты. Все что нужно, пойдет через нее, столь правильным и удобным универсальным образом. В то же время все, что работает с узким срезом этой таблицы - будет работать именно с узким срезом, легко и просто, без дополнительных усилий.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969033
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KozlovЧесно говоря, мне ближе решение с одной таблицей и флажком готовое изделие/комплектующее изделие
По-хорошему - это нарушение второй, кажется, нормальной формы (станет нарушением, как только появится поле, проставляемое только для "готовых" изделий и всегда пустое для комплектующих). Но с моей точки зрения, важнее вопрос ссылочной целостности - условие "в счет должны входить только готовые изделия" Вы не сможете выразить языком foreign key.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969046
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KozlovТак выглядит таблица
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969050
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KozlovА так на экране
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969055
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Теперь давайте смотреть, в чем разница. С одной стороны, если таки хочется продать обложку - нажимаем в списке полуфабрикатов "сделать товаром", вводим необходимые для продажи данные - ту же продажную цену - и готово. С другой стороны, держа их вместе - придется либо в куче мест пихать дополнительные проверки, либо время от времени решать возникшие коллизии, когда кто-то ошибся и выписал клиенту непродаваемый полуфабрикат.

Поэтому обратите внимание на мою схему. Собственно основная, центральная таблица в ней - полуфабрикаты. Все что нужно, пойдет через нее, столь правильным и удобным универсальным образом. В то же время все, что работает с узким срезом этой таблицы - будет работать именно с узким срезом, легко и просто, без дополнительных усилий.

Да Softwarer,
чем дальше думаю, тем больше с вами соглашаюсь.
Для моей задачи это, кажется, больше всего подходит.
Спасибо! Едем дальше...
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969056
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor KozlovНа экране так выглядит
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969061
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо PVP!
Очень полезный пример!
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969070
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer В бизнесе.

PVPЛюбой полуфабрикат может быть продан
"Имеет теоретическую возможность быть проданным" - да. А вот практическую - зависит от. Скажем, я несколько сомневаюсь в том, что Вы сможете подъехать в издательство и легко и просто (официально) купить обложку к книге. Если Вы не будете готовы потратить неадекватную сумму - Вам просто скажут "мы таким не занимаемся".

Теперь давайте смотреть, в чем разница. С одной стороны, если таки хочется продать обложку - нажимаем в списке полуфабрикатов "сделать товаром", вводим необходимые для продажи данные - ту же продажную цену - и готово. С другой стороны, держа их вместе - придется либо в куче мест пихать дополнительные проверки, либо время от времени решать возникшие коллизии, когда кто-то ошибся и выписал клиенту непродаваемый полуфабрикат.По прежнему никакой разницы. Для учета готовой продукции имеются свои счета, для полуфабрикатов – другие. И когда речь идет о реализации, то множество ТМЦ (не только товаров, и любых материальных ценностей), подлежащее продаже, определяется счетом, с которого производится их расход.
И еще, если хоть иногда полуфабрикат может быть продан, то уже следует отрабатывать операции его реализации. Ведь не придерживаться же утверждения «Да это у нас очень редко»
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969075
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Igor KozlovЧесно говоря, мне ближе решение с одной таблицей и флажком готовое изделие/комплектующее изделие
По-хорошему - это нарушение второй, кажется, нормальной формы (станет нарушением, как только появится поле, проставляемое только для "готовых" изделий и всегда пустое для комплектующих). Но с моей точки зрения, важнее вопрос ссылочной целостности - условие "в счет должны входить только готовые изделия" Вы не сможете выразить языком foreign key.Комплектующее или готовое изделие, с точки зрения технологического процесса, относительное понятие. Если на этой операции собирается какой либо узел, то узел здесь явялется изделием. На следующей операции этот же узел будет комеплектующим. Поэтому флажком здесь не обойтись.
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969132
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, кто-нибудь обнаружит [хотя бы поверхностное] знание производственных стандартов [например, на уровне отличий полуфабрикатов от готовых изделий]?
...
Рейтинг: 0 / 0
Проект БД изделий
    #32969152
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Интересно, кто-нибудь обнаружит [хотя бы поверхностное] знание производственных стандартов [например, на уровне отличий полуфабрикатов от готовых изделий]?А guest_20040621 так же относится к множеству "кто-нибудь" ?
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проект БД изделий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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