我找到了几个库存数据库的例子。但我正在寻找一些不同的东西。我正在使用SQL。
我需要跟踪工具。员工可以检查工具,并减少该工具的库存,并将该事务记录在(checked_out)表中。容易走远。
当员工返回工具或工具时,员工可以选择。他可以将工具退回库存。还算容易。或者他可以将工具打破并丢弃,换句话说,将其记录到垃圾桌。或者他可以将工具放入resharpen bin并将其记录到resharpen表中。这是我感到困惑的地方。
答案 0 :(得分: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”的记录。您还可以运行管理查询以显示有多少工具是“已损坏”。计划在正确计算损坏的工具后最终删除这些记录,或者将它们保留用于历史数据目的。
不惜一切代价,避免为数据库中任何实体的处置创建单独的表。使用“flag”字段(即status_id),这样就可以向应用程序添加新状态,而无需无限添加新表。
答案 1 :(得分:3)
您的设置错误,您不应该为垃圾,签出和 resharpen-bin 设置单独的表。这些只是表明可以找到工具。
你想要的是一个包含这两个表的数据库,这些表将容纳HardCode在his solution中提出的数据:
Inventory
-----
id (PK)
description
status_id (FK -> Statuses)
Statuses
----------
id (PK)
答案 2 :(得分:2)
我喜欢HardCode的架构,但它可能更接近于被建模以存储位置而不是状态的情况(在任何情况下我都不鼓励使用“status”这个词,因为它是如此通用的是无意义的)。位置实际上是在这里被跟踪的内容,甚至可以用于指示在签出时该项目的当前持有者。如果要跟踪它,我认为应该单独进行身体状况。这将允许基于工具用户反馈或员工观察的更精细等级的条件。
(回应评论2)
我希望您有一张表来记录工具的个别移动(在某个时间由人Z从位置A到位置B),另一个用于记录更高级别的摘要或当前位置。很大程度上取决于工具是否通过序列号单独识别,例如,在这种情况下,您可以单独跟踪它们,或者它们是否只是众多相同工具中的一种,而不是单独识别。这将决定您是否记录5个事务(每个工具一个)或5个工具的1个事务。您可能只是概括为“已检出的5个工具”,或者您可能会声明“这些工具当前位于这些位置”。