Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条码范围数据库设计_Php_Mysql_Database_Web_Database Design - Fatal编程技术网

Php 条码范围数据库设计

Php 条码范围数据库设计,php,mysql,database,web,database-design,Php,Mysql,Database,Web,Database Design,我正在为我们的仓库设计一个运输系统。基本上,我试图完成的是,从条形码范围中提取一个数字,并将其分配给装运订单 我们的合作伙伴快递员会定期提供范围,通常不连续,例如9000000-9009999,9020000-9029999。范围内的每个数字只能使用一次 当前,范围在脚本中硬编码,当前索引存储在文件中。(传统实施) 但我觉得有一个界面是合适的,即使是非程序员也可以在这个界面上管理范围,监控每个范围的状态(例如,哪个范围当前处于“活动”状态,当前索引是什么,等等)。当当前范围用完时,它应该自动切换

我正在为我们的仓库设计一个运输系统。基本上,我试图完成的是,从条形码范围中提取一个数字,并将其分配给装运订单

我们的合作伙伴快递员会定期提供范围,通常不连续,例如
9000000-9009999
9020000-9029999
。范围内的每个数字只能使用一次

当前,范围在脚本中硬编码,当前索引存储在文件中。(传统实施)

但我觉得有一个界面是合适的,即使是非程序员也可以在这个界面上管理范围,监控每个范围的状态(例如,哪个范围当前处于“活动”状态,当前索引是什么,等等)。当当前范围用完时,它应该自动切换到下一个可用范围。下面是我提出的UI设计。

您认为将范围数据存储在数据库中是个好主意吗?如果是,我应该如何设计数据库表?

需要考虑的其他事项包括:

  • 有些炉灶是由快递员回收的,所以我们有机会 两次接收相同的范围。(好吧,也许几年后)
  • 大多数情况下,一个范围可以持续4个月到6个月,因此 不会有很多范围。(如果我们使用一个表来存储范围,我们每年会看到2到4个新的范围记录)
  • 当射程结束时,它基本上是无用的

如果非相邻范围属于同一实体,则一个表将具有实体,包括
实体id
。另一个表将包含条形码范围(开始和结束),以及
实体id

您将需要代码来验证您没有创建重叠的范围。以及处理删除子范围的操作


如果您希望有数百万个范围,那么我建议您调整代码。

如果非相邻范围属于同一个实体,那么一个表将有实体,包括一个
实体id
。另一个表将包含条形码范围(开始和结束),以及
实体id

您将需要代码来验证您没有创建重叠的范围。以及处理删除子范围的操作


如果您希望有数百万个范围,那么我建议您调整代码。

我认为您需要从更高的层次来看待问题

关键是GS1系统,以前称为EAN(我使用它已有20多年了)

重要的问题是,您不应允许外部机构指定您的装运编号。如果您决定将装运详细信息保留7年,例如,他们决定在3年后回收数字,那么您就有了数据问题。同样,如果您有多家船运代理(或将来接手另一家,现有代理中的一家被拆分成部分或出售或其他任何形式),那么当他们的系统发生变化时,您可能再次遇到数据问题

(这适用于非贵机构直接控制的所有
数据)

EAN方法是使用SSCC-串行装运集装箱代码。这是分配给对象的18位代码,唯一标识该对象。它的名义有效期为三年,因此不应更频繁地重新发行

SSCC根据国际公认的结构生产,并以“代码128”条形码(因此通常称为GS1-128或EAN-128)进行编码,该条形码的前导字符为[fnc1]——国际上认可,表示“这是遵循EAN-128格式的条形码”。其余字符为:

00
-SSCC的AI(有许多不同用途的代码。“00”表示“SSCC”。它实际上是一个应用程序标识符-尽管已知条形码打印机制造商相信它是“20位代码”的一部分

1位
-在以前,“3”是一个“内部托盘”,而“4”和“外部托盘”。由于一个经常变成另一个,该系统很快被放弃,但图例仍然存在-一些人会错误地坚持前导数字必须是“3”

7-9位
-国家代码+组织代码。由控制组织分配并许可给使用成员组织

9-7位
-使用成员组织发布的单个装运编号

1位
-检查根据发布的算法生成的数字,通常由打印机固件计算

因此,第一组和倒数第二组数字由GS1成员组织(即您的组织)自行分配

此系统可用于将您的货物运送到组织外部,也可用于跟踪组织内部的货物

很可能,您的托运人已将其号码的一部分分配给您,就像他们通常对非GS1成员的小型组织所做的那样。不幸的是,执行此任务的职员更喜欢以相同的方式对待所有客户,因此传说您使用他们的系统。如果这个想法被采纳根植于他们的IT猴子的肥沃头脑中,他们可能已经基于这一假设建立了自己的系统

如果他们的IT系统已由专业人员设置,则他们将能够接受任何符合标准的SSCC-您只需发送带有您的编号的发货清单,然后他们的软件将根据您的打印机生产的标签对其进行验证我搞砸了

你真的需要和他们的IT部门谈谈他们的需求是什么

这意味着您根本不需要使用他们的号码-您可以按照设计使用系统,使用您的号码