猿问

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

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

  1. 可以选座位, 客户端可以提前知道买票人的信息(肤色)

  2. 卖出去北京-上海的票之后, 北京-广州的库存就要减一, 但是上海-广州的票不受影响(其他情况类似,路途有交叉的票都不能再卖了)

  3. 这趟车每个座位都可以坐5个人,但是这5个人的肤色必须相同,比如3车8F这个座位可以坐5个白人,或者5个黑人. 第一个买这个座位的人决定这个座位能坐什么肤色的人. 假如第一个买到3车8F座位的人是黄种人, 那么黑种人或者白种人去买票的时候就看不到这个座位了,但是其他黄种人还是可以选的.

  4. 要保证客户端查询余票的效率

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


慕娘9325324
浏览 559回答 2
2回答

慕码人2483693

把所有车票打撒呢?比如车从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的票关于肤色,那就是座位号与肤色绑定,一开始肤色和座位号没有绑定,一旦购票成功,座位号与肤色就绑定了,以后再有人来买票,可分配的座位筛选条件为(未绑定肤色的座位和绑定了指定肤色的座位)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答