現(xiàn)在很多網(wǎng)站都會有抽獎系統(tǒng),那么抽獎系統(tǒng)是怎么設(shè)計(jì)的呢,下面我們就來說說:
1. 我們可以把每個(gè)活動抽象出一張表,有具體的活動標(biāo)題,活動的開始時(shí)間,活動的結(jié)束時(shí)間,因?yàn)槊總€(gè)活動限制的用戶抽取次數(shù)不同,所以有一個(gè)抽取次數(shù)的限制,還有活動的狀態(tài),那么活動表我們起名為t_activity;
2. 活動的獎勵我們可以抽象出一張表,獎勵有獎勵的類型,紅包和積分的具體數(shù)額,實(shí)物的獎品名稱,等等,獎品的等級,是一等獎,二等獎,三等獎,還是紀(jì)念獎,還有每個(gè)獎品獲取的概率,那么物品的表我們起名為t_prize;
3. 如果是實(shí)物獎勵的話,需要用戶填寫一些信息,領(lǐng)取人的姓名,領(lǐng)取人的聯(lián)系方式,領(lǐng)取人的收獲地址t_information;
4. 用戶每次抽獎的記錄,抽到了那個(gè)獎項(xiàng),如果是紅包的和積分的話,數(shù)額是多少,用戶是否領(lǐng)取了獎勵,如果是實(shí)物的話,抽到了那個(gè)實(shí)物,是否填寫了實(shí)物的領(lǐng)取信息,還有抽獎時(shí)間t_raffle;
這就好像我們說的,我有一百個(gè)乒乓,其中一個(gè)是紅色。然后把這些放到一個(gè)盒子里面,然后你在進(jìn)行摸。當(dāng)你摸完一次以后,在把你摸到的乒乓放回到盒子里面,在進(jìn)行摸。這些,你每次摸中紅色球的概率都是1/100。于是這樣就產(chǎn)生的一個(gè)問題,我們對獎品會變得不可控制。如果一個(gè)運(yùn)氣好,很有可能機(jī)會造成獎品還不夠發(fā)送。如果運(yùn)氣不好,這些獎品永遠(yuǎn)都可能留在那里。
于是根據(jù)這種問題,又有一種方法,每一次我們摸中的球,不放回回去了。于是概率也就變成:1/100,1/99,1/98……。這樣也就控制了中獎的人數(shù)。但是這樣又會出現(xiàn)一個(gè)問題:作為開獎人我對抽獎時(shí)間是不可控的。很多商家希望的是我在每個(gè)時(shí)間段能發(fā)送相應(yīng)的獎品回去,這樣更能提高抽獎的熱度。如果一個(gè)獎品很快我就發(fā)送出去出去了,后面來的人會很失望。
于是根據(jù)這個(gè)問題,又出現(xiàn)了一種方法。如果我們把獎品放到抽獎的數(shù)量上面去,那不就可以控制抽獎的時(shí)間和中獎的人數(shù)了。如果100次抽獎中,我想每隔10次就有一個(gè)中獎,于是,我就隨機(jī)吧中獎的機(jī)會放到5,16,21…..這樣的抽獎次數(shù)去。這樣我就能控制抽獎人的那種心情。能把更多的人留在我這里進(jìn)行抽獎。
現(xiàn)在我們來說說關(guān)于數(shù)據(jù)庫設(shè)計(jì):
然后我們來說說相關(guān)的設(shè)計(jì)思路:
Id:不做說明
OpporName:主要是為了區(qū)分,例如針對一個(gè)獎品我還要進(jìn)行時(shí)間段的區(qū)分。所以當(dāng)設(shè)置的獎品多的時(shí)候,就不方便區(qū)分了。
PrizeID:獎品ID。
PrizeName:獎品名稱。
PrizeNumber:獎品數(shù)量。(方便概率的計(jì)算,和獎品的統(tǒng)計(jì)。同時(shí)如果我對一個(gè)設(shè)置追加獎品的時(shí)候,能更好的使用)
OPNumberList:中獎的次數(shù)列表。這個(gè)是為了吧獎品設(shè)置到每次抽獎的次數(shù)上面去,如果數(shù)量不是很大,就用varchar類型。
PTNum:已經(jīng)抽中的數(shù)量,這個(gè)也是方便,如果追加獎品能進(jìn)行計(jì)算。同時(shí)可以計(jì)算獎品的剩余數(shù)量。
BeginDate:此抽獎概率適用開始時(shí)間。
EndDate:此抽獎概率適用結(jié)束時(shí)間。
ForeNumber:此次抽獎在前多少次抽獎里面進(jìn)行選取。因?yàn)閷τ诔楠勎覀儽旧韺δ骋粫r(shí)段的抽獎人數(shù)是不能拿確認(rèn)的。一個(gè)小時(shí)里面,他有可能有100個(gè)人,或者有200個(gè)人。于是我們設(shè)置概率也就不能確認(rèn)在多少,于是我們選擇了在某個(gè)時(shí)段,前多少次抽獎里面進(jìn)行選取。例如我在2-3點(diǎn)之間,一般來的人為100-500個(gè)人,如果當(dāng)天來的人只有100個(gè),那么我設(shè)置到102這樣的次數(shù)上面,肯定獎品就只有輪空了。如果我們前100個(gè)人之間選,那么我的獎品肯定會配送出去的。
AreaID:適于于那些地區(qū)。
UserID:我指定抽中的為某個(gè)人。這個(gè)是為了某些公司有自己的托而進(jìn)行的設(shè)置。
NowNumber:現(xiàn)在抽獎的次數(shù)。
OrderID:獎品的概率排序。如果我有多個(gè)獎品在一個(gè)時(shí)間進(jìn)行了覆蓋。我肯定要設(shè)置優(yōu)先把那些獎品分配出去。
LotteryExp:領(lǐng)獎的有效時(shí)間。
OneMaxPriz:每次獎品中獎發(fā)放的數(shù)量。如果我們每次中獎給2張點(diǎn)卡,等等。
States:狀態(tài)。概率狀態(tài)。
文章內(nèi)容來源于網(wǎng)絡(luò),侵刪