比火车票复杂的数据库设计方案?

0 0 java javascript php golang mysql
aゞ特仑苏
aゞ特仑苏

声望值:97 0人

2019-02-21 14:24:39 提问

关注 0关注

收藏 0收藏, 150浏览

最近要做一个系统, 有点类似售卖火车票的概念,但是能选座,大概也是卖了长途的票,同一条线的短途余票也会扣除库存. 但是比这个还要复杂一点.比如我要卖高铁票,京广线,需求如下:

  1. 可以选座位, 客户端可以提前知道买票人的信息(肤色)
  2. 卖出去北京-上海的票之后, 北京-广州的库存就要减一, 但是上海-广州的票不受影响(其他情况类似,路途有交叉的票都不能再卖了)
  3. 这趟车每个座位都可以坐5个人,但是这5个人的肤色必须相同,比如3车8F这个座位可以坐5个白人,或者5个黑人. 第一个买这个座位的人决定这个座位能坐什么肤色的人. 假如第一个买到3车8F座位的人是黄种人, 那么黑种人或者白种人去买票的时候就看不到这个座位了,但是其他黄种人还是可以选的.
  4. 要保证客户端查询余票的效率

想过很多种方案,要么查询效率不够高,要么数据不好维护. 总有一种感觉, 自己知识面不够,可能自己想复杂了,在懂行的人来说可能就是一个算法的事....之前请教过一个会数学建模的人,只是让我去看线性规划,百度半天实在看不懂! 还请大神不吝赐教~ 给点思路或者方向都行....Orz

请先 登录 后评论

2个回答

  • の酒度微笑69声望 2018-09-25 09:27

    为避免种族歧视之嫌,我们只讨论站点吧。 题主在站点上的设计是有问题的,拿北京-郑州-广州举例(火车从北京到广州是不可能经过上海的),客人选了北京-广州的班次,但买的是北京-郑州段,那么: 首先看北京-郑州段有没有库存,有的话就减1; 如果没有该段库存,那么找最短的包含该段的库存,例如北京-汉口,这样会北京-汉口的库存减1,同时郑州-汉口的库存加1。
    请先 登录 后评论
  • 大神都是不可靠的64声望 2018-09-25 09:32

    把所有车票打撒呢?比如车从1号站始发,到5号站结束,也就是1-2-3-4-5:1,冒号1的意思是绑定座位号,100个位子即1-100打撒后视为有4张票,也就是1-2:1、2-3:1、3-4:1、4-5:1如果列车有100个座位,那就可以认为有100*4=400张票 如果某人要做1-3的话,就看1-2和2-3的票数量是否都大于1并且座位号相同,是的话,就卖票,票面上写1-3和座位号,并且后台对应座位号的1-2和2-3都减1假设当2-3的票数量为0的时候,买1-4的票就失败了,但还是能买3-4的票 关于肤色,那就是座位号与肤色绑定,一开始肤色和座位号没有绑定,一旦购票成功,座位号与肤色就绑定了,以后再有人来买票,可分配的座位筛选条件为(未绑定肤色的座位和绑定了指定肤色的座位)
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问