[英]Database design for barcode ranges
我正在为我们的仓库开发运输系统。 基本上,我要完成的工作是从条形码范围中提取一个数字,并将其分配给运输订单。
范围是由我们的合作伙伴信使定期给予他们通常不是连续的,如9000000-9009999
, 9020000-9029999
。 范围内的每个数字只能使用一次。
当前范围在脚本中进行了硬编码,当前索引存储在文件中。 (旧版实施)
但是我觉得有一个接口,即使非程序员也可以管理范围,监视每个范围的状态(例如,哪个当前处于“活动状态”,当前索引是什么,等等),这是适当的。 当当前范围用完时,它应自动切换到下一个可用范围。 以下是我想到的UI设计。
您认为将范围数据存储在数据库中是个好主意吗? 如果是这样,我应该如何设计数据库表?
需要考虑的其他一些事项是:
我相信您需要对事务有一个更高层次的了解。
关键是GS1系统,以前称为EAN(我使用它已有20多年的历史了。)
重要的问题是您不应让您的货件号码由外部机构决定。 如果您说要保留7年的装运详细信息,而他们决定在3年后回收编号,那么您将遇到数据问题。 同样,如果您拥有多个货运代理公司(或在将来承办另一家货运代理公司,或者现有的货运代理公司被拆分成部分或出售或以其他方式出售),那么在THEIR系统发生变更时,您仍然会遇到数据问题。
(并且适用于您的组织未直接控制的所有数据)
EAN方式是通过使用SSCC-串行运输容器代码。 这是分配给对象的18位代码,可唯一标识该对象。 它的标称寿命为三年,因此不应更频繁地重新发行。
SSCC是根据国际公认的结构生产的,并编码为“ code 128”条形码(因此通常称为GS1-128或EAN-128),其条形码特征为[fnc1]-国际上公认的表示“这是遵循EAN-128格式的条形码”。 其余字符为:
00
-SSCC的AI(有多种用途的代码。“ 00”表示“ SSCC”。它实际上是一个应用程序标识符 -尽管甚至连条形码打印机制造商都认为它构成了“ 20位代码”。
1 digit
-以前,“ 3”是“内部托盘”,“ 4”是“外部托盘”。 由于一个人经常成为另一个人,因此该系统很快就被放弃了,但传说仍然存在-有些人会错误地坚持认为前导数字必须为“ 3”。
7-9 digits
-国家代码+组织代码。 由控制组织分配并许可给使用成员组织。
9-7 digits
-使用会员组织发布的个人发货编号。
1 digit
-根据发布的算法产生的校验数字,通常由打印机固件计算得出。
因此,GS1成员组织(即您的组织)会自行决定分配第一和倒数第二组数字。
该系统可用于将货物运送到组织外部,也可用于跟踪组织内部的货物。
在所有的可能性,你的托运人分配它们的数量的一个子集给你,因为他们通常与不属于GS1成员小企业做的。 不幸的是,执行此任务的店员更喜欢以相同的方式对待所有客户,因此,传说您必须使用他们的系统。 如果这个想法扎根在他们的 IT猴子的肥沃头脑中,那么他们可能已经在这种假设下建立了自己的系统。
如果他们的 IT系统是由专业人员建立的,那么他们将能够接受任何符合规定的SSCC-您只需发送,然后将发出附有您的编号的货件清单,他们的软件将在打印机打印时根据您的打印机产生的标签对它进行验证。提货。
您确实需要与他们的IT部门讨论他们的要求。
这意味着,你根本不需要在所有使用它们的数量-您可以使用该系统,因为它的设计,使用你的号码了, 你有控制权。
如果不相邻的范围属于同一个Entity,则一个表将具有Entities,其中包括entity_id
。 另一个表将包含条形码范围(开始和结束),以及entity_id
。
您将需要代码来验证您没有创建重叠范围。 并处理删除子范围。
如果您希望拥有数百万个范围,那么建议您改写我的IP地址块代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.