我是一个业务团队的学生实习生,我的同事没有CS的背景,所以我希望得到一些反馈和建议,以改进我将要处理的Flask Web应用程序的数据库设计。另外,几年前,我通过遵循Youtube上的教程自学了sql。
企业收到新的工作订单后,将其传递给5个工作站的生产线以进行进一步处理。当前,工作订单的状态为已开始或已完成。我们希望通过了解工作订单的当前工位/阶段(A,B,C,D,E)来更好地进行跟踪,然后通过让每个工位的操作员知道下一步的工作来帮助改善流程。
我的想法是创建一个Web应用程序(使用Python 3,Flask和postgresql),当每个工作站的操作员扫描工作订单的条形码和另外两个静态条形码(in_station_X和out_station_X)时,该数据库将更新数据库。每个工作站将有一个平板电脑连接到扫描仪。
I。工作站操作员的角度(例如工作站1)
扫描该班次的所有传入工作单(条形码)的批次。对于每个项目,他们还将扫描in_station_1条形码以记录每个工作订单的time_in
。
工作订单排在队列中,因此最终在平板电脑上运行的Web应用可以向他们显示下一步的工作。
在处理项目时,操作员将再次扫描工作订单以及out_station_1条形码以记录每个工作订单的time_out
。
由于不同的priority (boolean Yes/No)
,从该站出来的项目的顺序可能与传入队列的顺序不同。
II。管理员/仪表板角度:
查看当天每个工单的当前工位和周期时间。
根据需要修改工作订单的优先级。
此外,如果工位2无法在工位2中处理并且需要返回工位1,则有可能看到重新循环。
III。数据库:
a。包含以下字段的工作单信息表:
id, workorder_barcode, requestor, priority (boolean Yes/No), date_created.
b。跟踪数据库:我正在考虑使用以下列:
- id (automatically generated for new row)
- workorder_barcode (nullable = False)
- current_station (nullable = False)
- time_in
- time_out
我有与此跟踪表有关的几个问题/疑虑:
每次扫描工作订单时,都会创建一个新行(这意味着任一列为空白)。与用time_in
来填充time_out
的相同工作订单相比,您是否发现此方法有任何问题?原因是为了避免在数据库规模较大时进行多次查找。
由于每个站点的应用程序屏幕都将显示接下来的内容,因此您认为使用ORDER_BY
进行简单查询以显示所需顺序就足够了吗?我关心的是根据每个项目的优先级和当前进货订单显示下一个项目。我认为我可以按多列(time_in and priority
)和FILTER
和current_station
进行排序。但是,正如您在下面看到的,我认为当前的表设计可能比执行队列控制更适合捕获事件。
例如:今天的表格如下
id, workorder_barcode, current_station, time_in, time_out
61, 100.1, A, 6:00pm, null
62, 100.3, A, 6:01pm, null
63, 100.2, A, 6:02pm, null
...
70, 100.1, A, null, 6:03pm
71, 100.1, B, 6:04pm, null
...
74, 100.5, C, 6:05pm, null
在6:05 pm,每个站点的队列将是
Station A queue: 100.3, 100.2
Station B queue: 100.1
Station C queue: 100.5
非常感谢您阅读本文。感谢您提出任何问题,意见和建议,因为在尝试该项目时,我试图了解有关数据库的更多信息。