|
|
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Доброго время суток всем. Подскажите, как правильно спроектирвать БД, при следующей ситуации? Существует заказ, в который входит изделие(изделий в одном заказе может быть несколько). Изделие изготовлено из сырья. Сырье же, в свою очередь, тоже может продаваться т.е. как бы само является готовым изделием. Так вот, вопрос в следующем. Как правильно составить таблицы, чтобы удовлетворяли условиям создания БД, т.е. чтобы не было аномалий, записи желательно уникально идентифицировались по одному стобцу и т.д. ? Я сделал 3 осн. табл.: Изделие, Сырье и Заказ. С первыми двумя все ясно, а вот с третей каша получается, потому как в ней есть 3 основных поля(ID_заказа, ID_изделия, и ID_сырья). Первичный ключ, по идее, надо либо делать из этих 3х полей либо создавать нов. поле(столбец). На мой взгляд и то и другое как то криво выходит. Подскажите более правильный способ. Кстати, БД MySQL 5., тип таблиц InnoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:43 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
что-то не совсем понятно - если в заказе может быть несколько изделий, то обычно две таблицы для хранения заказа - шапка, в кот. общие поля (напр, сумма заказа в рублях и т.д.), и строки заказа (в которых и должна быть продукция и сырье) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:11 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
MickkyДоброго время суток всем. Подскажите, как правильно спроектирвать БД, при следующей ситуации? Существует заказ, в который входит изделие(изделий в одном заказе может быть несколько). Изделие изготовлено из сырья. Сырье же, в свою очередь, тоже может продаваться т.е. как бы само является готовым изделием. Так вот, вопрос в следующем. Как правильно составить таблицы, чтобы удовлетворяли условиям создания БД, т.е. чтобы не было аномалий, записи желательно уникально идентифицировались по одному стобцу и т.д. ? Я сделал 3 осн. табл.: Изделие, Сырье и Заказ. С первыми двумя все ясно, а вот с третей каша получается, потому как в ней есть 3 основных поля(ID_заказа, ID_изделия, и ID_сырья). Первичный ключ, по идее, надо либо делать из этих 3х полей либо создавать нов. поле(столбец). На мой взгляд и то и другое как то криво выходит. Подскажите более правильный способ. Кстати, БД MySQL 5., тип таблиц InnoDB. ИМХО, о БД здесь надо думать в последнюю очередь, на этапе реализации.... Когда-то я сталкивался с таким (реализация полуфабрикатов и готовой продукции резино-химического производства). Схема таблиц была примерно следующая: Код: plaintext Т.о. в Заказе видны только позиции заказа, номенклатуру - т.е. Изделия. Геморрой возникает при расчете плана расхода сырья, т.е. сколько необходимо произвести/приобрести сырья на обеспечение всех заказов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:23 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
MickkyДоброго время суток всем. Подскажите, как правильно спроектирвать БД, при следующей ситуации? Существует заказ, в который входит изделие(изделий в одном заказе может быть несколько). Изделие изготовлено из сырья. Сырье же, в свою очередь, тоже может продаваться т.е. как бы само является готовым изделием. Так вот, вопрос в следующем. Как правильно составить таблицы, чтобы удовлетворяли условиям создания БД, т.е. чтобы не было аномалий, записи желательно уникально идентифицировались по одному стобцу и т.д. ? Я сделал 3 осн. табл.: Изделие, Сырье и Заказ. С первыми двумя все ясно, а вот с третей каша получается, потому как в ней есть 3 основных поля(ID_заказа, ID_изделия, и ID_сырья). Первичный ключ, по идее, надо либо делать из этих 3х полей либо создавать нов. поле(столбец). На мой взгляд и то и другое как то криво выходит. Подскажите более правильный способ. Кстати, БД MySQL 5., тип таблиц InnoDB. Кстати говоря, а зачем заказу "видеть" все "внутренности" изделия? Первичный ключ тогда определяется уникально - ID заказа. А все остальное получается на основании реляционных запросов (Select-SQL) к базе данных. Возможно, придется выполнять запросы в цикле, чтобы спуститься до самых нижних уровней (материалы, из которых получаем полуфабрикаты для передела/продажи).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:31 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
qwertyuqчто-то не совсем понятно - если в заказе может быть несколько изделий, то обычно две таблицы для хранения заказа - шапка, в кот. общие поля (напр, сумма заказа в рублях и т.д.), и строки заказа (в которых и должна быть продукция и сырье) По поводу того что в для хранения заказа должно быть 2 табл. это все понятно, я так и сделал. Т.е. у меня в одной табл. поля ID_Заказа, ID_Клиента, Дата заказа и т.д., т.е. Заказы как неделимые единици (о ней речь не идет, меня другая табл интересует.), а вторая, как раз та которую я и описал. Т.е. во второй таблице рассматривается Заказ, как делимая единица, т.е. внутренности ее. Станислав СИМХО, о БД здесь надо думать в последнюю очередь, на этапе реализации.... Когда-то я сталкивался с таким (реализация полуфабрикатов и готовой продукции резино-химического производства). Схема таблиц была примерно следующая: Код: plaintext Т.о. в Заказе видны только позиции заказа, номенклатуру - т.е. Изделия. Геморрой возникает при расчете плана расхода сырья, т.е. сколько необходимо произвести/приобрести сырья на обеспечение всех заказов... Т. е. как я понял, вы предлагаете в таблице "Изделия" объеденить сырьё и изделие произведенное из сырья и присвоить каждому из элементов свой ID? У меня были такие соображения...но никуда не вылились, мне показалось, что IDшников слишком много будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:46 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Mickky qwertyuqчто-то не совсем понятно - если в заказе может быть несколько изделий, то обычно две таблицы для хранения заказа - шапка, в кот. общие поля (напр, сумма заказа в рублях и т.д.), и строки заказа (в которых и должна быть продукция и сырье) По поводу того что в для хранения заказа должно быть 2 табл. это все понятно, я так и сделал. Т.е. у меня в одной табл. поля ID_Заказа, ID_Клиента, Дата заказа и т.д., т.е. Заказы как неделимые единици (о ней речь не идет, меня другая табл интересует.), а вторая, как раз та которую я и описал. Т.е. во второй таблице рассматривается Заказ, как делимая единица, т.е. внутренности ее. Станислав СИМХО, о БД здесь надо думать в последнюю очередь, на этапе реализации.... Когда-то я сталкивался с таким (реализация полуфабрикатов и готовой продукции резино-химического производства). Схема таблиц была примерно следующая: Код: plaintext Т.о. в Заказе видны только позиции заказа, номенклатуру - т.е. Изделия. Геморрой возникает при расчете плана расхода сырья, т.е. сколько необходимо произвести/приобрести сырья на обеспечение всех заказов... Т. е. как я понял, вы предлагаете в таблице "Изделия" объеденить сырьё и изделие произведенное из сырья и присвоить каждому из элементов свой ID? У меня были такие соображения...но никуда не вылились, мне показалось, что IDшников слишком много будет. Не совсем так. В Изделия и Номенклатуру (связь по ID_Изделия) помещаются только те продукты, которые могут быть проданы, т.е. полуфабрикаты и готовые изделия В Сырье и Изделия (связь по ID_Cырья) помещаются полуфабрикаты, используемые для производства готовых изделий и материалы, которые используются для производства полуфабрикатов. По смыслу - это два разных ID. Хотя, можно разработать какие-то общие принципы их кодирования и физически поместить в один справочник. Таким образом имеем: Номенклатура = список продаваемых товаров (почти прайс-лист) Изделия = "рецептурная карта", т.е. из чего состоит наше изделие Сырье = перечень исходного сырья Сложность же заключается в том, что полуфабрикат может быть как сырьем, так и готовым изделием. Можно пойти двумя вариантами: 1. Кодировать различными ID идентичный полуфабрикат. Т.е., если он продажный продукт, то имеет один ID, а если используется в производстве - то другой ID. Тогда легко запутаться в номенклатуре. 2. ID остается постоянным несмотря на то, где используется полуфабрикат: продается или перерабатывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 15:02 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
STFF BOM а также состав изделия. Обычно все изделия, сырье, полуфабрикаты перечисляют в одной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 11:27 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Станислав С Не совсем так. В Изделия и Номенклатуру (связь по ID_Изделия) помещаются только те продукты, которые могут быть проданы, т.е. полуфабрикаты и готовые изделия В Сырье и Изделия (связь по ID_Cырья) помещаются полуфабрикаты, используемые для производства готовых изделий и материалы, которые используются для производства полуфабрикатов. По смыслу - это два разных ID. Хотя, можно разработать какие-то общие принципы их кодирования и физически поместить в один справочник. Таким образом имеем: Номенклатура = список продаваемых товаров (почти прайс-лист) Изделия = "рецептурная карта", т.е. из чего состоит наше изделие Сырье = перечень исходного сырья Сложность же заключается в том, что полуфабрикат может быть как сырьем, так и готовым изделием. Можно пойти двумя вариантами: 1. Кодировать различными ID идентичный полуфабрикат. Т.е., если он продажный продукт, то имеет один ID, а если используется в производстве - то другой ID. Тогда легко запутаться в номенклатуре. 2. ID остается постоянным несмотря на то, где используется полуфабрикат: продается или перерабатывается. Мне не совсем понятно что кроется под словом "наименование" в табл. "Номенклатура". Поясните пожалуйста. как я понимаю туда может входить как готовое изделие (произведенное из сырья), так и сырье которое идет на продажу. Так ли это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 12:27 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Mickky Станислав С Не совсем так. В Изделия и Номенклатуру (связь по ID_Изделия) помещаются только те продукты, которые могут быть проданы, т.е. полуфабрикаты и готовые изделия В Сырье и Изделия (связь по ID_Cырья) помещаются полуфабрикаты, используемые для производства готовых изделий и материалы, которые используются для производства полуфабрикатов. По смыслу - это два разных ID. Хотя, можно разработать какие-то общие принципы их кодирования и физически поместить в один справочник. Таким образом имеем: Номенклатура = список продаваемых товаров (почти прайс-лист) Изделия = "рецептурная карта", т.е. из чего состоит наше изделие Сырье = перечень исходного сырья Сложность же заключается в том, что полуфабрикат может быть как сырьем, так и готовым изделием. Можно пойти двумя вариантами: 1. Кодировать различными ID идентичный полуфабрикат. Т.е., если он продажный продукт, то имеет один ID, а если используется в производстве - то другой ID. Тогда легко запутаться в номенклатуре. 2. ID остается постоянным несмотря на то, где используется полуфабрикат: продается или перерабатывается. Мне не совсем понятно что кроется под словом "наименование" в табл. "Номенклатура". Поясните пожалуйста. как я понимаю туда может входить как готовое изделие (произведенное из сырья), так и сырье которое идет на продажу. Так ли это? :) Наименование = Название, Name и т.д. Номенклатура - это для удобства продажников, чтобы было удобнее оформлять счета, формировать отчеты и т.д. По сути да, Вы правы - туда может попасть и полуфабрикат и готовое изделие. Но если мы это продаем клиенту, то значит это уже готовое изделие?! Здесь может быть несколько искусственный выход - сделать "искусственное" "готовое изделие", состоящее только из полуфабриката и отличающееся от него тем, что УПАКОВАНО (т.е. готовое изделие = упакованный полуфабрикат). :) Но: я рассказываю, как это было у нас. Вы можете "пойти своим путем"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 13:01 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Станислав С:) Наименование = Название, Name и т.д. Номенклатура - это для удобства продажников, чтобы было удобнее оформлять счета, формировать отчеты и т.д. По сути да, Вы правы - туда может попасть и полуфабрикат и готовое изделие. Но если мы это продаем клиенту, то значит это уже готовое изделие?! Здесь может быть несколько искусственный выход - сделать "искусственное" "готовое изделие", состоящее только из полуфабриката и отличающееся от него тем, что УПАКОВАНО (т.е. готовое изделие = упакованный полуфабрикат). :) Но: я рассказываю, как это было у нас. Вы можете "пойти своим путем"... Что такое наименование я, кажется, понял. Только, если туда может попасть и изделие и сырье, получается надо в это поле ("наименование") уместить и табл. "Изделия" и табл. "Сырье". А вот как это реализовать, мне не понятно и что там будет первичным ключем. Своим путем говорите,... можно, но я не уверен что он правильный. а надо заложить тот путь который не привел бы к тупиковой ситуации, т.е. чтоб было правильно и с точки зрения построения БД и чтоб был удобно продавцам. Другими словами заложить правильный "фундамент", а иначе потом "дом" развалатся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 12:19 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Mickky Что такое наименование я, кажется, понял. Только, если туда может попасть и изделие и сырье, получается надо в это поле ("наименование") уместить и табл. "Изделия" и табл. "Сырье". А вот как это реализовать, мне не понятно и что там будет первичным ключем. Ну что же. Опишу на конкретном примере наш подход. Напомню, что схема таблиц была примерно следующая: Код: plaintext 1. Под "Номенкалтурой" у нас понималось следующее: Код: plaintext 1. 2. 3. Теперь дальше. "Изделия" содержат состав изделий, например: Код: plaintext 1. 2. 3. 4. 5. Дальше. "Сырье" содержит все разнообразие сырья, используемое в производстве: Код: plaintext 1. 2. 3. 4. 5. 6. При этом заказчики (а также наши менеджеры-продавцы) и не догадываются о составе транспортерной ленты. Кроме того, полуфабрикат "смесь резиновая ПБУ16-32-XIV" может быть продан нашими продавцами под кодом 1.10 (Хотя, если быть более точным, то продаваться будет упакованный в бумагу / пленку / коробку / контейнер (по желанию заказчика) полуфабрикат).... Сейчас понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:58 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Станислав СНу что же. Опишу на конкретном примере наш подход. Напомню, что схема таблиц была примерно следующая: Код: plaintext 1. Под "Номенкалтурой" у нас понималось следующее: Код: plaintext 1. 2. 3. Теперь дальше. "Изделия" содержат состав изделий, например: Код: plaintext 1. 2. 3. 4. 5. Дальше. "Сырье" содержит все разнообразие сырья, используемое в производстве: Код: plaintext 1. 2. 3. 4. 5. 6. При этом заказчики (а также наши менеджеры-продавцы) и не догадываются о составе транспортерной ленты. Кроме того, полуфабрикат "смесь резиновая ПБУ16-32-XIV" может быть продан нашими продавцами под кодом 1.10 (Хотя, если быть более точным, то продаваться будет упакованный в бумагу / пленку / коробку / контейнер (по желанию заказчика) полуфабрикат).... Сейчас понятно? О, совсем другое дело :). Принцип понятен. Спасибо. Только получается, что "Смесь резиновая ПБУ16-32-XIV" в табл. "Номенклатура" и последняя запись в табл. "Сырье" разные вещи. Т.е. они не завязаны. я имею ввиду такую ситуацию. Например наша "Смесь резиновая ПБУ32-32-IV"(в табл. "Сыроье") стала называться немного по другому(скажем цифры иль буквы поменялись, но сырье тоже). Тогда будет ли она изменяться(со старой на новую) в табл. "Номенкалтура" автоматом? Или ручками ее там менять придется? Т.е. думаю будет лучше, если сначала определенному сырью назначить ID, а дальше его(этот ID) везде использовать (и составной частью изделия и готовым продуктом идущим на продажу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 17:39 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Ни надо ничего разделять. Есть Продукты и все. Составные, атомарные. Ест техпроцесс. Актуальный или нет. и он определяетс=т что с чем делать. собрать ли, упаковать ли или просто грузить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2006, 12:07 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
А "Лента транспортерная" берётся из того же справочника, что и "Смесь резиновая ПБУ16-32-XIV" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2008, 12:37 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Станислав СMickky Что такое наименование я, кажется, понял. Только, если туда может попасть и изделие и сырье, получается надо в это поле ("наименование") уместить и табл. "Изделия" и табл. "Сырье". А вот как это реализовать, мне не понятно и что там будет первичным ключем. Ну что же. Опишу на конкретном примере наш подход. Напомню, что схема таблиц была примерно следующая: Код: plaintext 1. Под "Номенкалтурой" у нас понималось следующее: Код: plaintext 1. 2. 3. Теперь дальше. "Изделия" содержат состав изделий, например: Код: plaintext 1. 2. 3. 4. 5. Дальше. "Сырье" содержит все разнообразие сырья, используемое в производстве: Код: plaintext 1. 2. 3. 4. 5. 6. При этом заказчики (а также наши менеджеры-продавцы) и не догадываются о составе транспортерной ленты. Кроме того, полуфабрикат "смесь резиновая ПБУ16-32-XIV" может быть продан нашими продавцами под кодом 1.10 (Хотя, если быть более точным, то продаваться будет упакованный в бумагу / пленку / коробку / контейнер (по желанию заказчика) полуфабрикат).... Сейчас понятно? правильно я понимаю есть 2 сущности изделие и сырье и таблица для связи этих сущностей, а вот если в эту таблицу связи добавить поля которые характеризуют эту связь, например поле количество и поле исполнение с которым данная деталька входит в изделие и исполнение изделия в которое входит данная деталька ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:05 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
нужно ли таблицу связи преобразовывать в отдельную сущность и какие поля там будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:07 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
нужно ли вводить еще одну сущность и какие поля она будет содержать? подскажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:09 |
|
||
|
Правильное создание БД. Изделия & Сырьё
|
|||
|---|---|---|---|
|
#18+
Станислав С Код: plaintext Можно попробовать поиграться с древовидной структурой. Код: plaintext Где ID_Сырья это ссылка на ID_Изделия. Если ID_Сырья = 0, то это чистое сырье. Соответственно упрощается работа с номенклатурой, но усложняется работы с Изделием. В частности добавление и удаление. Нужно будет писать специальные триггеры, для этих операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2010, 17:50 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34031554&tid=1542632]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 547ms |

| 0 / 0 |
