2. 追溯对象与数据需求分析

数据库设计的第一步不是画表,而是把“要追什么、追到多细、每个环节留下什么数据”想清楚。追溯对象与数据需求分析的任务,就是把业务现场中真实存在的物品、事件和属性抽象成可建模的实体与字段。本节以乳制品、肉制品、果蔬三类典型品类为例,说明如何识别追溯单元、关键追溯事件与数据属性,并最终产出需求清单和数据字典初稿。

一、先确定追溯单元:追到哪一层决定表结构

追溯单元是追溯系统中可被唯一标识、可独立记录流转的最小对象。常见有三个层级:批次(同一生产条件下产出的一组产品,如某日某条灌装线的一批酸奶)、托盘/周转箱(物流集装单元,如一个码放 60 箱牛奶的托盘)、单品(最小销售包装,如一瓶 250mL 巴氏杀菌乳)。

三个层级并非任选其一,而是往往同时存在并需要建立关联。批次是质量责任的主体,托盘是仓储运输的操作单位,单品是消费者扫码查询的入口。设计时通常以批次为核心,通过“批次—托盘—单品”的关联表实现层级穿透。例如乳制品企业可规定:一个批次对应若干托盘,每个托盘贴 SSCC 物流码,单品包装喷印批次号与序列号,扫码即可由单品反查批次与原料奶来源。

不同品类的追溯粒度要求不同。肉制品因涉及检疫与分割,常需追到“胴体—分割批次—门店”链路;果蔬因易腐、来源分散,常以“采收批次+地块”为基本单元;乳制品则强调“原料奶收储批次—加工批次”的对应关系。粒度越细,标识与采集成本越高,需在召回精度与实施成本间权衡。

二、识别关键追溯事件:把流转过程拆成可记录节点

追溯事件是追溯单元在供应链上发生的、需要留痕的关键动作。典型事件包括生产(原料接收、投料、加工、包装)、仓储(入库、移库、出库)、运输(装车、在途、卸货)、销售(上架、售出)。每个事件都应记录“何时、何地、由谁、对哪个追溯单元、做了什么、结果如何”。

以巴氏杀菌乳为例,可拆出:原料奶接收(牧场、收储时间、酸度、菌落总数)→ 标准化与均质(配方批次)→ 巴氏杀菌(温度 72~75℃、时间 15s、杀菌记录)→ 灌装(线号、批次号)→ 冷藏入库(库温 2~6℃)→ 冷链运输(车厢温度曲线)→ 门店收货与销售。肉制品则增加检疫合格证、分割工序、速冻或冷藏节点;果蔬增加采收地块、农残检测、预冷与分级包装节点。

事件识别要避免两个极端:过粗则无法定位问题环节,过细则采集负担过重。实用做法是围绕“一旦出现质量问题,需要回答哪些问题”来倒推事件清单,例如“这批奶用的是哪个牧场的奶”“运输途中是否断链”“同批次还发往了哪些门店”。

乳制品追溯:单元层级 × 关键事件 × 数据属性 原料奶接收 牧场/收储批次 加工与杀菌 温度/时间/线号 灌装包装 批次号/序列号 冷藏仓储 库温/托盘码 冷链运输 车厢温度曲线 销售 门店/售出 追溯单元层级 批次(核心) 加工批次号 / 原料奶批次 托盘 / 周转箱 SSCC 物流码 单品 包装序列号 / 二维码 1:N 1:N 每个事件必须采集的数据属性 时间 事件发生时刻、持续时长 如杀菌 15s、在途 6h 地点 牧场、车间、库位、门店 需可编码定位 主体 操作方、责任方、承运方 企业/人员/车辆标识 质量指标 酸度、菌落总数、温度 检测值 + 判定结论 产出物 需求清单:追溯单元清单、事件清单、属性清单、查询场景(正向/反向追溯) 数据字典初稿:字段名、含义、类型、长度、是否必填、取值范围、来源系统、更新频率

三、数据属性:四类要素与质量指标

每个追溯事件至少要回答四个问题:时间(何时发生、持续多久)、地点(在哪个牧场、车间、库位、门店)、主体(谁操作、谁负责、哪辆车承运)、质量指标(当时的检测值或环境参数)。前三类构成追溯的骨架,质量指标则是判断“是否合格、是否断链”的依据。

质量指标要区分“检测型”和“过程型”。检测型如原料奶酸度(°T)、菌落总数(CFU/mL)、肉制品兽药残留、果蔬农残抑制率,通常有明确限值和判定结论;过程型如杀菌温度、冷藏库温、运输车厢温度,是连续或周期性采集的参数,需要记录时间序列或至少记录最大值、最小值与超限次数。设计字段时应保留“实测值+单位+判定+检测方法/设备”的组合,避免只存一个合格与否的布尔值,否则后续无法做趋势分析。

四、从需求清单到数据字典初稿

需求清单可按“对象—事件—属性—查询场景”四列组织。以乳制品为例,一行可写:对象=加工批次,事件=巴氏杀菌,属性=杀菌温度、保持时间、设备编号、操作人、开始与结束时间,查询场景=按批次查杀菌记录、按时间段查超限批次。肉制品可增加检疫证号、分割间温度;果蔬可增加地块编号、采收日期、预冷终温。

数据字典初稿则把清单落成字段级定义。以下为乳制品“加工批次”核心表的示例片段(字段与取值为教学示例,非实测数据):

字段名          含义            类型        必填  取值/说明
batch_id       加工批次号       VARCHAR(24)  是   如 YL20240518-A01
raw_batch_id   原料奶收储批次   VARCHAR(24)  是   关联原料接收记录
product_code   产品编码         VARCHAR(16)  是   对应品类规格
line_no        灌装线号         VARCHAR(8)   是   L1/L2/L3
pasteur_temp   杀菌温度(℃)      DECIMAL(4,1) 是   72.0~75.0
pasteur_time   保持时间(s)      INT          是   15
pack_start     灌装开始时间     DATETIME     是   ISO 8601
shelf_life_end 保质期截止       DATE         是   冷藏 7 天示例
qc_result      质量判定         VARCHAR(8)   是   合格/不合格/待检

编写字典时要同步明确主键与外键关系:批次号为主键,原料奶批次、托盘码、门店收货单号作为外键或关联表字段,保证正向(批次→流向哪些门店)与反向(单品→批次→原料奶)两个方向都能查询。字段命名保持全库统一,时间统一采用 ISO 8601 格式并注明时区,地点使用编码而非自由文本,质量指标必须带单位。

识别追溯单元时先问“召回时要精确到哪一层”,再决定是否引入单品序列号;事件清单用“质量问题倒推法”生成,比照搬行业模板更贴合本企业实际。

完成上述分析后,需求清单与数据字典初稿即构成后续概念模型(E-R 图)和逻辑表设计的直接输入。判断分析是否到位,可用三个问题自检:任一单品能否反查到原料批次与关键工序参数;任一批次能否正向列出全部流向;任一质量指标能否追溯到检测时间、设备与判定人。三者均可回答,说明追溯对象与数据需求已基本闭合。