一般來說,在大轉盤抽獎系統中至少需要包含以下表。
·全局配置表:用於存儲系統的配置信息。
·獎品配置表:用於存儲獎品名稱及數量等信息。
·用戶信息表:用於記錄參加活動的用戶信息。
·抽獎記錄表:用於記錄用戶參加的活動的行為。
在數據庫設置之前,需要創建一個數據庫,這裡數據庫的名稱為「wx_dazhuanpan」。其中,「wx」是「微信」拼音的首字母,「dazhuanpan」則是「大轉盤」的拼音。
在phpMyAdmin的後台中,選擇Databases(數據庫)標籤,然後在Create Database(創建數據庫)功能框中輸入數據庫的名稱「wx_dazhuanpan」,編碼類型選擇utf8_general_ci,最後點擊Create(創建)按鈕,如圖24-12所示。
圖24-12 創建數據庫
創建好數據庫之後,開始建表。
一般來說,一個活動的開展總是有開始時間和結束時間的,這也是系統開發過程中要考慮的。另外,由於這是一個抽獎活動,而抽獎活動不可能給用戶無限次的抽獎機會,所以還需要做一個抽獎次數限制。
下面定義了一個配置表,該配置表用於存儲上述配置內容。該表的建表腳本如下。
DROP TABLE IF EXISTS 'wx_config'; CREATE TABLE IF NOT EXISTS 'wx_config' ( 'id' int(5) NOT NULL, 'starttime' varchar(30) NOT NULL, 'endtime' varchar(30) NOT NULL, 'maxtimes' varchar(5) NOT NULL, PRIMARY KEY ('id') ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
用戶可以使用phpMyAdmin的數據庫後台的創建表格功能來建立這個表,依次填寫表名及各個字段名稱、類型及其他屬性,如圖24-13所示。
圖24-13 創建表
另外,也可以直接在SQL運行框上使用上述腳本來建表,如圖24-14所示。
圖24-14 運行SQL腳本
建表後,全局配置表如圖24-15所示。
圖24-15 表格創建成功
獎品配置表用於存儲獎品信息,這些信息包括獎品名稱、獎品數量及中獎概率。
建表的SQL腳本如下。
DROP TABLE IF EXISTS 'wx_award'; CREATE TABLE IF NOT EXISTS 'wx_award' ( 'id' int(10) unsigned NOT NULL AUTO_INCREMENT, 'name' varchar(50) NOT NULL COMMENT '獎品名稱', 'total' int(11) NOT NULL COMMENT '數量', 'prob' varchar(20) NOT NULL, PRIMARY KEY ('id') ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
獎品配置表建成之後,如圖24-16所示。
圖24-16 獎品配置表
用戶信息表主要用於存儲用戶的個人信息,這些信息包括微信OpenID、用戶姓名、用戶手機號。
建表的SQL腳本如下。
DROP TABLE IF EXISTS 'wx_user'; CREATE TABLE IF NOT EXISTS 'wx_user' ( 'id' int(6) NOT NULL auto_increment, 'openid' varchar(30) NOT NULL, 'name' varchar(16) NOT NULL, 'mobile' varchar(15) NOT NULL, PRIMARY KEY ('id'), UNIQUE KEY 'openid' ('openid') ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
為了防止同一個人多次重複提交而導致出錯,可對openid設置唯一性約束,這樣可以避免出現同一人多次重複提交個人信息成功的情況。對於一些潛在的隱患,應該盡早在設計時就防患於未然。
用戶信息表建好後,如圖24-17所示。
抽獎記錄表主要用於存儲用戶的抽獎記錄,這些信息包括微信OpenID、獎品等級、抽獎日期、領獎狀態。
圖24-17 用戶信息表
建表的SQL腳本如下。
DROP TABLE IF EXISTS 'wx_winner'; CREATE TABLE IF NOT EXISTS 'wx_winner' ( 'id' int(10) unsigned NOT NULL auto_increment, 'openid' varchar(30) NOT NULL, 'award' varchar(100) NOT NULL COMMENT '獎品等級', 'getdate' varchar(20) NOT NULL, 'status' tinyint(1) NOT NULL default '0' COMMENT '0未領獎,1已領獎', PRIMARY KEY ('id') ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
抽獎記錄表建好後,如圖24-18所示。
圖24-18 抽獎記錄表
最終數據庫中建好了4個表,如圖24-19所示。
圖24-19 所有表格