|
|
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Задали в универе задачу: Разработать БД для учета материальных нормативов. Остальное более или менее получается, но возникли вопросы насчет материалов и их заменителей. Суть в следующем: На деталь расходуется материал, причем на одну деталь материалы могут расходоваться по разным операциям. На пару (деталь, операция) норма расхода материала должна быть только одна. На материал допускаются заменители, которые должны расходоваться на туже пару (деталь, операция) что и заменяемый материал. Норма расхода заменителя может отличаться от нормы основного материала. Приведу таблицу с тестовыми данными: # Деталь Операция Материал Норма Тип материала Пользователь изменивший запись1 Деталь №1 Протирка спирт 5 Основной Вася2 Деталь №1 Протирка вода 15 Заменитель (для записи # 1) Вася3 Деталь №1 Протирка ацетон 7 Заменитель (для записи # 1) Петя4 Деталь №1 Протирка тряпка 10 Основной Вася5 Деталь №1 Упаковка бумага 1 Основной Вася6 Деталь №2 склеивание клей 55 Основной Вася Хотел сделать так: # Продукция Операция Материал Норма Ссылка на основной Пользователь изменивший запись1 Деталь №1 Протирка спирт 5 NULL Вася2 Деталь №1 Протирка вода 15 1 Вася3 Деталь №1 Протирка ацетон 7 1 Петя4 Деталь №1 Протирка тряпка 10 NULL Вася5 Деталь №1 Упаковка бумага 1 NULL Вася6 Деталь №2 склеивание клей 55 NULL Вася То есть у тех записей, который являются заменителями есть ссылка на заменяемый материал, а у основных - NULL. Но так как у заменитель должен применяться на ту же пару (деталь, операция) что и заменяемый материал, то возникает аномалия обновления при изменении детали или операции у заменителя или заменяемого материала(если я правильно понимаю). Например, если происходит изменение операции Протирка на Мойка у записи #1, то необходимо изменить операцию у записей #2 и #3. Поэтому решил разбить таблицу на 3 таблицы Норма расходаIDНормаМатериалПользователь изменивший запись Норма расхода основного материалаНорма расхода (FK)ДетальОперация Норма расхода заменителяНорма расхода (FK)Заменяемый материал (FK) - ссылка на основной материал Теперь при изменении операции или детали у основного материала не придется изменять соответствующие атрибуты у заменителя. Вот только смущает большое количество таблиц для такой маленькой задачи. Вспомнилось - "не плодите сущности сверх необходимости". Может не надо было разбивать и можно было обойтись одной таблицей? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2010, 18:27 |
|
||
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
De4ender , как вариант... ДетальКодНазвание ОперацияКодНазвание МатериалКодНазвание Состав материалов На операциюКодКод операцииКод материалаНормаКод кого заменяет Действие с деталямиКодКод деталиКод операции С "Пользователем изменившим запись" нужно еще разбираться... Может нужно контролировать изменение во всех табличках. А может только в нескольких... Т.е. таблиц еще больше получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2010, 21:39 |
|
||
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
De4enderВспомнилось - "не плодите сущности сверх необходимости". Может не надо было разбивать и можно было обойтись одной таблицей? По количеству таблиц обычно решает сам разработчик... Все зависит от того насколько все будет загружено. Что потом будут делать с таблицами... И сколько за это заплатят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2010, 21:41 |
|
||
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
krvsa De4ender , как вариант... Т.е. таблиц еще больше получается Я наверное зря не упомянул... но таблицы детали, материалы и операция уже есть и предполагается, что в таблицах хранятся идентификаторы (FK на детали, операции и материалы) Далее Состав материалов На операциюКодКод операцииКод материалаНормаКод кого заменяет Действие с деталямиКодКод деталиКод операции Получается та же ситуация, при которой при изменении кода операции у основного материала мы вынуждены менять код операции у заменителя (по условии задачи основной материал и заменитель должны расходоваться на одну и туже пару деталь, операция). Как такового состава на операцию нет, есть лишь информация о том, что на деталь Д1 расходуется материал М2 на операции М1. На другую деталь, на той же операции может расходоваться совершенно другой материал. К тому же у заменителя норма своя. Поэтому я не понял к чему здесь таблица "Состав материалов На операцию". А насчет пользователей - хватит и одного значения на все таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2010, 22:11 |
|
||
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
авторРазработать БД для учета материальных нормативовфраза не имеет смысла -- просто набор слов не нормативы надо учитывать а МАТЕРИАЛЫ НОРМЫ РАСХОДА МАТЕРИАЛОВ - так должна называться таблица утверждается она гл. инженером и изменяется редко. каждая запись в таблице-справочнике состоит из 5 полей код деталь операция материал норма а теперь о БД можно поговорить создаем таблицу РАСХОД МАТЕРИАЛОВ с полями: КТО КОГДА КОД из справочника конечно все ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2010, 10:28 |
|
||
|
Материалы и их заменители
|
|||
|---|---|---|---|
|
#18+
nosov, тему лучше читать, прежде чеми отвечать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2010, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=70&tid=1542549]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 397ms |

| 0 / 0 |
