2009-03-24 3 views
1

Я нашел несколько примеров базы данных инвентаря. Но я ищу кое-что другое. Я работаю с SQL.База данных инвентаризации

Мне нужно следить за оснасткой. Сотрудники могут проверить оснастку, а инвентарь для этого инструмента будет уменьшен, и эта транзакция будет записана в таблице (checked_out). Легко далеко.

Когда сотрудник возвращает инструмент или инструменты, у сотрудника есть выбор. Он может либо вернуть инструмент в инвентарь. Все еще довольно легко. Или он может вернуть инструмент назад и выбросить его, другими словами записать его в корзину. Или он мог бы поместить инструмент в корзину resharpen и записать его в таблицу resharpen. Здесь я смущаюсь.

ответ

7

Похоже, вам нужен статус в таблице инвентаря. Например, запись для произвольного инструмента может иметь поле состояния, которое является внешним ключом в таблице «Статусы». Таблица Статусы может выглядеть следующим образом:

ID  Description 
----------------------- 
1  Available 
2  In Use 
3  Broken 

... и т.д.

Ваш стол инвентаризации может выглядеть следующим образом:

id  status_id  description 
------------------------------------- 
1  2   Hammer 
2  1   Hammer 
3  3   Hammer 
4  1   Saw 
5  3   Saw 

Затем, когда вы вычисляете инвентарь, показывать только записи, где инструмент имеет статус «1» для «Доступно». Вы также можете запускать запросы для управления, чтобы показать, сколько инструментов «Разбито». Планирование окончательного удаления этих записей после того, как сломанные инструменты будут учтены должным образом, или сохраните их для целей исторических данных.

Во избежание создания отдельных таблиц для размещения любого объекта в базе данных. Используйте поле «флаг» (то есть status_id), поэтому вы можете добавлять новые статусы в приложение без необходимости бесконечного добавления новых таблиц.

+0

lol - Отличная идея! –

+0

Великие умы ... ;-) – HardCode

+0

Да, вы покрыли данные, и я нарисовал структуру, я думаю, что я отредактирую свою версию, чтобы соответствовать вашему статусу. –

3

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

Что вы хотите, это база данных, которая включает в себя эти 2 таблицы будет домашней данные, предложенные жёстко в his solution:

Inventory 
----- 
id (PK) 
description 
status_id (FK -> Statuses) 

Statuses 
---------- 
id (PK) 
2

мне нравится схема жёстко, но это может быть ближе матч к ситуации моделируются для хранения местоположения вместо статуса (в любом случае я бы обескуражил использование слова «статус», который является настолько общим, чтобы быть беззаботным). Расположение действительно то, что отслеживается здесь, и может даже использоваться, чтобы указать, кто является текущим держателем предмета, когда он выписан. Я думаю, что физическое состояние должно проводиться отдельно, если его вообще следует отследить. Это позволило бы более мелкие оценки условий, основанных на обратной связи инструментальных средств или наблюдении персонала.

(В ответ на комментарий 2)

Я бы ожидать, что вы бы таблица для записи отдельных движений инструментов (от местоположения А на место В в определенное время лица Z), а другой к записать итоговое резюме или текущее местоположение более высокого уровня. Многое будет зависеть от того, были ли инструменты индивидуально идентифицированы по серийному номеру, например, и в этом случае вы будете отслеживать их по отдельности или же они являются лишь одним из нескольких тех же инструментов, которые не идентифицируются индивидуально. Это определит, будете ли вы записывать 5 транзакций (по одному для каждого инструмента) или 1 транзакцию из 5 инструментов.Вы можете просто подвести итог как «5 инструментов проверены» или вы можете указать, что «эти отдельные инструменты в настоящее время находятся в этих местах».

+0

Я согласен: Место может содержать «Магазин», «Ремонтный магазин», «Использовать», «Неизвестно». Условие может содержать «Полезно», «Ожидание ремонта», «Разрушено». Местоположение = Магазин и Условие = Используемый означает, что он может быть заимствован. В этом случае это 6/полдюжины, а в других - гранулярность может помочь в выборе. –

+0

Я здесь много отдыхаю. Но я все еще смущен насчет четности. Предположим, у меня есть 100 инструментов. Я проверяю 5. Эта транзакция записывается. В таблице транзакций говорится, что EmployeeID 1 взял 5 ToolA's для Machine 4. Где находится кватитность ToolA, расположенного в первую очередь? –

Смежные вопросы