同一家船公司、同一艘船的航次号有可能重复;而船期表中多次出现相同的船名、航次号,也可能只是同一航次在不同港口的挂靠记录。这两种情况需要区分。
以下船名、航次号、日期均为假设示例。
船名表示是哪一艘船;航次表示这艘船执行的某一次航行任务;航次号是船公司为该航次编制的编号;挂靠港口是这次航行途中停靠的港口;船期则体现船舶在相关港口的预计到达、离开等时间安排。
同一家船公司、同一艘船,不同实际航次可能使用相同的航次号,具体取决于船公司的编号规则。有的按年度重新计数,有的跨年连续编号,不能认为所有船公司都每年重置。docs.dataloy.com
假设A船公司每年重新编号,而且航次号不包含年份:
| 船公司 | 船名 | 航次号 | 开航日期 |
|---|---|---|---|
| A船公司 | 示例远洋轮 | 001W | 2026-01-10 |
| A船公司 | 示例远洋轮 | 002W | 2026-03-20 |
| A船公司 | 示例远洋轮 | 001W | 2027-01-12 |
第一条和第三条的船公司、船名、航次号完全相同,但对应不同年份的两次航行。重复的是航次号,实际航次并不是同一个。
另一种情况是:同一个实际航次会挂靠多个港口,因此船期表需要为每个港口分别记录到离港时间。
例如,A船公司的“示例远洋轮”执行 026W 航次,行驶路线为:
上海 → 宁波 → 新加坡 → 鹿特丹
假设船公司在上述航段统一使用 026W,船期表可能如下:
| 船名 | 航次号 | 挂靠港口 | 预计到港时间(ETA) | 预计离港时间(ETD) |
|---|---|---|---|---|
| 示例远洋轮 | 026W | 上海港 | 2026-10-05 | 2026-10-06 |
| 示例远洋轮 | 026W | 宁波港 | 2026-10-07 | 2026-10-08 |
| 示例远洋轮 | 026W | 新加坡港 | 2026-10-14 | 2026-10-15 |
| 示例远洋轮 | 026W | 鹿特丹港 | 2026-11-10 | 2026-11-11 |
这里的“示例远洋轮+026W”出现了4次,表示同一航次的4条挂靠记录,并不代表执行了4个航次。
放到货代订单中看:
| 客户订单 | 装货港 | 卸货港 | 船名/航次 | 装货港预计离港日期 |
|---|---|---|---|---|
| 客户A的一柜家具 | 上海 | 鹿特丹 | 示例远洋轮/026W | 2026-10-06 |
| 客户B的一柜服装 | 宁波 | 鹿特丹 | 示例远洋轮/026W | 2026-10-08 |
客户A的货先在上海装船,船驶到宁波后,再装上客户B的货,随后继续驶往欧洲。两票货的装货港、上船日期不同,但乘坐的是同一艘船的同一个航次。
因此,在货代系统中,建议这样管理:
- 船舶记录:管理船舶本身的信息。
- 航次记录:每个实际航次生成独立的航次ID,记录船公司、船舶、完整航次号、航次年份等信息。
- 挂靠记录:一个航次下面保存多条记录,分别管理挂靠顺序、港口、预计及实际到离港时间。
- 订单关联:订单关联具体航次,以及相应的装货港、卸货港挂靠记录。
- 唯一性处理:不要直接把“船公司+船名+航次号”设置为永久唯一的组合;预计开航时间可能调整,也不适合作为不可变的主键。