Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проект БД изделий / 25 сообщений из 68, страница 1 из 3
18.03.2005, 16:49
    #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
18.03.2005, 17:02
    #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
18.03.2005, 17:06
    #32968863
zass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проект БД изделий
Любую БД начинают проектировать с справочников - основная информация, которая будет находиться правктически во всех таблицах. В Вашем случае - материалы. т.о. необходимо создать справочкик или справочники материалов. А вот потом только пойдут таблицы изделий.
...
Рейтинг: 0 / 0
18.03.2005, 17:20
    #32968902
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проект БД изделий
Igor KozlovРазница между изделиями верхнего уровня и всех остальных только то, что они продаются заказчикам, а остальные - комплектующие. Между ними нет никакой разницы. В терминологии бухучета они различаются как полуфабрикаты и готовые изделия. На этом вся разница закончилась. Для них одинаковый учет, отдельные сборочные единицы могут входить с более крупные. Одинаковая методика расчета их себестоимости. Полуфабрикаты также могут быть реализованы со всеми вытекающими последствиями – необходимость списания их себестоимости на финансовые результаты. Следовательно, не должно быть разных таблиц для полуфабрикатов и готовых изделий. Это одна таблица.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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