出站时间跨一天和跨多天的情况数据库需要怎么设计呢?

来源:9-20 为车次&车厢&车站增加存在性校验

慕神4535282

2023-08-17

老师,下午好!
请教一个问题?
我查了一下,最长的火车 Z265 – 广州~拉萨,行驶时长为53时53分。跨了两天才到目的地。
我的问题是:如何体现出这种第2天,还是第3天才到达的情形。以上面的Z265为例,同是从 广州 进站,目的地是 郑州 的话,页面上目的地处会多一个+1,表示第2天才到,而目的地是 拉萨 的话,会多一个 +2, 表示第3天才到。这时,如果更改出发站点,更为 郑州 进站的话,目的地同样不变是 拉萨,这时候就由 +2 变为 +1,表示第2天才到。
现在问题来了。
数据库要怎么设计来体现这种关系呢?
我能想到的是单独设计一张表,

create table `train_station_span_days` (
  `id` bigint not null comment 'id',
  `train_code` varchar(20) not null comment '车次编号',
  `name` varchar(20) not null comment '站名',
  `in_time` time comment '进站时间', 
  `out_time` time comment '出站时间', 
  `span_days` int not null comment '跨天数,即进站到出站跨了几天', 
  `create_time` datetime(3) comment '新增时间', 
  `update_time` datetime(3) comment '修改时间',
  primary key (`id`),
  unique key `train_code_index_unique` (`train_code`, `index`),
  unique key `train_code_name_unique` (`train_code`, `name`) 
) engine=innodb default charset=utf8mb4 comment='车次车站跨天表';

但这样做的话,就算是一个车次总共有10个站,两两排列组合起来记录也是很多的,请问老师,应该怎么设计(来体现这种两两站台是否有跨天,及跨了几天的情形)呢?
谢谢老师的解答!辛苦老师了!!!

写回答

1回答

甲蛙

2023-08-19

你看是不是可以这样:进站时间+运行时长,到站时间由运行时长自动计算,如果运行时长超过24小时,就是+1天。

0
6
慕容6319034
回复
慕神4535282
把保存的日期格式改了不是更简单吗
2023-12-26
共6条回复

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 511 问题

查看课程