一般来说,在大转盘抽奖系统中至少需要包含以下表。
·全局配置表:用于存储系统的配置信息。
·奖品配置表:用于存储奖品名称及数量等信息。
·用户信息表:用于记录参加活动的用户信息。
·抽奖记录表:用于记录用户参加的活动的行为。
在数据库设置之前,需要创建一个数据库,这里数据库的名称为“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 所有表格