首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》24.5.1 数据库设计

关灯直达底部

一般来说,在大转盘抽奖系统中至少需要包含以下表。

·全局配置表:用于存储系统的配置信息。

·奖品配置表:用于存储奖品名称及数量等信息。

·用户信息表:用于记录参加活动的用户信息。

·抽奖记录表:用于记录用户参加的活动的行为。

在数据库设置之前,需要创建一个数据库,这里数据库的名称为“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 所有表格