在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  PHP  GO  數(shù)據(jù)庫  HTML/ 比火車票復(fù)雜的數(shù)據(jù)庫設(shè)計(jì)方案?

比火車票復(fù)雜的數(shù)據(jù)庫設(shè)計(jì)方案?

最近要做一個(gè)系統(tǒng), 有點(diǎn)類似售賣火車票的概念,但是能選座,大概也是賣了長(zhǎng)途的票,同一條線的短途余票也會(huì)扣除庫存. 但是比這個(gè)還要復(fù)雜一點(diǎn).比如我要賣高鐵票,京廣線,需求如下:

  1. 可以選座位, 客戶端可以提前知道買票人的信息(膚色)
  2. 賣出去北京-上海的票之后, 北京-廣州的庫存就要減一, 但是上海-廣州的票不受影響(其他情況類似,路途有交叉的票都不能再賣了)
  3. 這趟車每個(gè)座位都可以坐5個(gè)人,但是這5個(gè)人的膚色必須相同,比如3車8F這個(gè)座位可以坐5個(gè)白人,或者5個(gè)黑人. 第一個(gè)買這個(gè)座位的人決定這個(gè)座位能坐什么膚色的人. 假如第一個(gè)買到3車8F座位的人是黃種人, 那么黑種人或者白種人去買票的時(shí)候就看不到這個(gè)座位了,但是其他黃種人還是可以選的.
  4. 要保證客戶端查詢余票的效率

想過很多種方案,要么查詢效率不夠高,要么數(shù)據(jù)不好維護(hù). 總有一種感覺, 自己知識(shí)面不夠,可能自己想復(fù)雜了,在懂行的人來說可能就是一個(gè)算法的事....之前請(qǐng)教過一個(gè)會(huì)數(shù)學(xué)建模的人,只是讓我去看線性規(guī)劃,百度半天實(shí)在看不懂! 還請(qǐng)大神不吝賜教~ 給點(diǎn)思路或者方向都行....Orz

回答
編輯回答
尕筱澄

為避免種族歧視之嫌,我們只討論站點(diǎn)吧。

題主在站點(diǎn)上的設(shè)計(jì)是有問題的,拿北京-鄭州-廣州舉例(火車從北京到廣州是不可能經(jīng)過上海的),客人選了北京-廣州的班次,但買的是北京-鄭州段,那么:

  • 首先看北京-鄭州段有沒有庫存,有的話就減1;
  • 如果沒有該段庫存,那么找最短的包含該段的庫存,例如北京-漢口,這樣會(huì)北京-漢口的庫存減1,同時(shí)鄭州-漢口的庫存加1。
2018年9月12日 03:21
編輯回答
涼汐

把所有車票打撒呢?
比如車從1號(hào)站始發(fā),到5號(hào)站結(jié)束,也就是1-2-3-4-5:1,冒號(hào)1的意思是綁定座位號(hào),100個(gè)位子即1-100
打撒后視為有4張票,也就是1-2:12-3:1、3-4:14-5:1
如果列車有100個(gè)座位,那就可以認(rèn)為有100*4=400張票

如果某人要做1-3的話,就看1-2和2-3的票數(shù)量是否都大于1并且座位號(hào)相同,是的話,就賣票,票面上寫1-3和座位號(hào),并且后臺(tái)對(duì)應(yīng)座位號(hào)的1-2和2-3都減1
假設(shè)當(dāng)2-3的票數(shù)量為0的時(shí)候,買1-4的票就失敗了,但還是能買3-4的票

關(guān)于膚色,那就是座位號(hào)與膚色綁定,一開始膚色和座位號(hào)沒有綁定,一旦購(gòu)票成功,座位號(hào)與膚色就綁定了,以后再有人來買票,可分配的座位篩選條件為(未綁定膚色的座位和綁定了指定膚色的座位)

2018年5月9日 01:26